我想增加当前的十进制变量, 所以我做了下面的代码
#! /bin/bash
k=1.3
file=/home/script.sh
next_k=$(echo "$k + 0.1" | bc -l)
sed -i "s/$k/$next_k/g" "$file"
echo $k
正如您在这里看到的,我必须在第3行中指定文件,是否有一种解决方法只是告诉它在当前文件中进行编辑和替换。而不是我将其指向文件。谢谢。
答案 0 :(得分:0)
我认为,您问的是如何引用自己的脚本名称,该名称由$0
持有,例如</ p>
#! /bin/bash
k=1.3
next_k=$(echo "$k + 0.1" | bc -l)
sed -i "s/$k/$next_k/g" "$0"
echo $k
您可以在Positional Parameters here上阅读更多信息,特别是以下内容:
($ 0)扩展为shell或shell脚本的名称。这是在外壳初始化时设置的。如果使用命令文件调用Bash(请参见Shell脚本),则将$ 0设置为该文件的名称。如果Bash以-c选项启动(请参阅调用Bash),则将$ 0设置为要执行的字符串之后的第一个参数(如果存在)。否则,将其设置为用于调用Bash的文件名,如参数0所示。
例如
$ cat test.sh
#! /bin/bash
k=1.3
next_k=$(echo "$k + 0.1" | bc -l)
sed -i "s/$k/$next_k/g" $0
echo $k
$ ./test.sh; ./test.sh ; ./test.sh
1.3
1.4
1.5
$ cat test.sh
#! /bin/bash
k=1.6
next_k=$(echo "$k + 0.1" | bc -l)
sed -i "s/$k/$next_k/g" $0
echo $k