Bash脚本sudo和变量

时间:2018-04-06 20:55:20

标签: bash

这里对Bash完全不熟悉,实际上我已经像瘟疫一样避免了10年。 今天,没有办法解决它。

在对着键盘敲打几个小时之后,我发现命令中的sudo和任何bash变量都被剥离了。

所以我有类似

的东西

somescript.sh

for i in {1..5}
do
    filename=somefilenumber"$i".txt
    echo $filename
done
如果我运行它,现在在命令行上

user@deb:~$ ./somescript.sh

我得到了预期的

somefilenumber1.txt
somefilenumber2.txt
somefilenumber3.txt
somefilenumber4.txt
somefilenumber5.txt

但如果我和sudo一起跑,就像     user @ deb:〜$ sudo ./somescript.sh

我会得到这个

somefilenumber{1..5}.txt

这是一个很大的问题,因为我正在尝试使用变量循环cp文件和rm文件。

所以这是带有cp和rm的代码

for i in {1..10}
do
    filename=somefilenumber"$i".txt
    echo $filename
    cp "$filename" "someotherfilename.txt"
    rm "$filename"
done

我最终得到了

cp: cannot stat 'somefilenumber{1..5}.txt': No such file or directory
rm: cannot remove 'somefilenumber{1..5}.txt': No such file or directory

我还需要运行sudo,因为其他需要它的程序。

这有什么办法吗? 即使没有其他任何需要sudo,我也不使用它,如果我确定要删除它,rm命令会提示我输入每个文件。重点是,当它运行数百个文件时,不要坐在这里绑在计算机上。

1 个答案:

答案 0 :(得分:0)

你可以尝试用seq 1 10替换{1..10}:

for i in `seq 1 10`
do
    filename=somefilenumber"$i".txt
    echo $filename
    cp "$filename" "someotherfilename.txt"
    rm "$filename"
done

您的问题听起来好像root用户的环境有问题,您是否使用以下命令启动脚本:      #!/斌/庆典 ?