创建当前文件夹中所有 .sh 文件的列表。检查此列表中每个文件的第一行,如果文件以 开头,#!/bin/sh
则将其替换为#!/bin/bash
.只修改有的文件#!/bin/sh
,不要盲目地将所有.sh文件的第一行替换为#!/bin/bash
。
此外,只需对启动序列进行替换。如果文件介于#!/bin/sh
两者之间,请勿替换它。您不必在子文件夹中递归搜索 .sh,只需在当前文件夹中的文件中进行替换。
答案1
如果您没有数千个“.sh”文件,并且没有以“.sh”结尾的子目录,您可以使用:
gawk -i inplace 'NR==1 && $0=="#!/bin/sh" {$0="#!/bin/bash"} 1' *.sh
答案2
#!/bin/bash
FILES=/home/prashanth/now/*.sh
for f in $FILES
do
x=$(head -n 1 $f)
y="#!/bin/sh"
if [ $x == $y ];
then
sed -i.bak '1 s/sh/bash/' $f
fi
done