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