当我在常规shell中编写它时,我正在尝试一些工作正常的工作人员,但是当我将它包含在bash脚本文件中时,它却没有。 第一个例子:
m=`date +%m`
m_1=$((m-1))
echo $m_1
这给了我上个月的值(实际减1),但如果从脚本执行则不起作用。
第二个例子:
m=6
m=$m"t"
echo m
这会在shell中返回“6t”(用“t”连接$ m),但是从脚本执行时只给我“t”。
我认为所有这些都可以由经验丰富的Linux用户轻松解答,但我只是在学习。
提前致谢。
答案 0 :(得分:2)
重新检查语法。
您的第一个代码段可以从命令行, bash 和 sh 工作,因为您的语法有效sh。在我看来,你的脚本文件中可能有拼写错误:
~$ m=`date +%m`; m_1=$((m-1)); echo $m_1
4
~$ cat > foo.sh
m=`date +%m`; m_1=$((m-1)); echo $m_1
^C
~$ bash foo.sh
4
~$ sh foo.sh
4
同样适用于带有更正的其他代码段:
~$ m=6; m=$m"t"; echo $m
6t
~$ cat > foo.sh
m=6; m=$m"t"; echo $m
^C
~$ bash foo.sh
6t
~$ sh foo.sh
6t
答案 1 :(得分:1)
确保脚本的第一行是
#!/bin/bash
而不是
#!/bin/sh
如果显式运行为bash
,Bash将仅启用其扩展功能。如果以sh
运行,它将以POSIX兼容模式运行。
答案 2 :(得分:0)
首先,它在脚本和终端上对我很好。
其次,你的最后一行echo m
只会输出“m”。我认为你的意思是“$ m”..