我是Bash脚本的新手,遇到了问题。我已经搜索过,看来问题可能出在我的变量$ MODIFIED中。
想知道是否有人可以帮助我找到解决方法?
我试图从目录中获取最后5个修改后的文件,然后通过替换第二个脚本中的第一行将它们导入到第二个脚本中。
到目前为止,我的代码:
#Pipe last 5 modified files within Students and output to script2
#Checks if script2 exists to avoid overwriting.
cd ~/Students/Stu5
MODIFIED=$(ls -1t | head -5)
if [ -f ~/Documents/OSShellScripts/OSScript2.sh ]; then
cd ~/Documents/OSShellScripts
echo "OSScript2 already exists."
sed -i "1s/.*/$MODIFIED/" ~/Documents/OSShellScripts/OSScript2.sh
fi
这将返回错误:sed:-e表达式#1,字符17:未终止的s命令
如果我将MODIFIED变量更改为“ hello”,则效果很好。
任何帮助我指出我要去哪里的地方都会很棒,谢谢。
答案 0 :(得分:1)
在传递给sed时,首先正确引用bash变量。
第二次记住,您正在将数组传递给sed。
如果这是故意的,则需要执行以下操作:
=IF($A2=MAX($A:$A),$F$1-SUM($B$1:$B1),RANDBETWEEN(0,($F$1-SUM($B$1:$B1))*($A2/MAX($A:$A))))
我还将更改sed的替代命令sed -i '1s/.*/'"$(echo ${MODIFIED})"'/' ~/Documents/OSShellScripts/OSScript2.sh
更改行命令s
,因为您的变量可能包含斜杠:
c