Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 这两行是什么意思?_Bash_Shell - Fatal编程技术网

Bash 这两行是什么意思?

Bash 这两行是什么意思?,bash,shell,Bash,Shell,我不熟悉shell脚本。请帮我处理这两行代码,我必须解决一个问题。解释这两条线: JSON=$CURRENTFILE=$NEWFILENAME echo $JSON > ${PROD_HOME}/tempHashes 这将产生如下结果: currentname=newname 在PROD_HOME环境或脚本变量指向的任何位置的文件tempHashes,替换该文件中的所有其他内容 但是,如果CURRENTFILE或NEWFILENAME变量包含空格或全局字符(*?{}[])之类的内容,则无

我不熟悉shell脚本。请帮我处理这两行代码,我必须解决一个问题。解释这两条线:

JSON=$CURRENTFILE=$NEWFILENAME
echo $JSON > ${PROD_HOME}/tempHashes

这将产生如下结果:

currentname=newname

在PROD_HOME环境或脚本变量指向的任何位置的文件
tempHashes
,替换该文件中的所有其他内容

但是,如果CURRENTFILE或NEWFILENAME变量包含空格或全局字符(*?{}[])之类的内容,则无法正常工作

要更正不需要的全局变量,请始终引用变量:

JSON="$CURRENTFILE"="$NEWFILENAME"
echo "$JSON" > "${PROD_HOME}"/tempHashes
根据数据的种类,这仍将面临挑战。大多数Linux文件系统上的文件名可以包含等号(=)。

对我来说 1) 你没有使用常数,所以小写 2) 对我来说,双倍等于一倍是令人讨厌的 3) 引号应围绕变量等。。 4) 您所说的是文件名而不是变量,请将其标记为文件名 5) 您正在从文件而不是变量传递数据

例如:

json_data_file="${current_filename}=${new_filename}"
cat "$json_data_file" > "${PROD_HOME}/tempHashes"

更新:根据指令,我更新了代码。正确地说,我认为lol

第一行:第二行:我认为这里没有涵盖足够的内容,所以我回答了一些细节…@user,您应该显示改进的代码,可以按预期工作。
a=b=c
没有将
a
b
设置为“c”,它将
a
设置为字符串“b=c”。等价的代码应该是
json_data_file=$(printf“%s=%s”$current_filename“$new_filename”)
不过,对于小写的变量名和引号,这是一个很好的建议。@glennjackman感谢我从来没有因为这个原因做过这种事情。谢谢你解释我的错误。