将ksh脚本目录转换为bash脚本的脚本?

0 bash ksh shell-script conversion

由于这两个kshbash是基于sh很多的Korn Shell脚本(KSH)将简称为伯恩-再次Shell脚本(bash)的一次家当和文件扩展名被改变运行,

而你调用$ bash script.bash而不是$ ksh script.ksh.

我有一个基本脚本来替换名为“files”的目录中出现的任何 ksh 并更改脚本的文件扩展名。

#!/bin/bash/

#replace instances
find ./files -type f - exec sed -i.bak "s/ksh/bash/g" {} \;

#Change extensions
for f in ./files/*.ksh;
  do mv "$f" "./files/""$(basename "$f" .ksh).bash"
done

#Clean up
rm ./files/*.bak
Run Code Online (Sandbox Code Playgroud)

该脚本可以工作并执行上述操作,但是是否足以将任何 ksh 脚本转换为 bash,或者是否存在我未考虑的条件?

ter*_*don 5

该脚本并没有真正做任何有用的事情。如果您明确使用 bash 运行,则扩展名无关紧要,并且将忽略 shebang 行。如果您只是运行,您可以获得与您的脚本完全相同的内容:

bash script.ksh
Run Code Online (Sandbox Code Playgroud)

问题是语法上的差异。这就是您需要修复的,否则,只需使用 bash 运行脚本并完成它。

  • @glennjackman 不会比 OP 运行他们的脚本时发生的情况更糟。我的主要观点是这里的前提是错误的,更改扩展广告 shebang 行基本上毫无意义。这就是为什么我说需要修复的是不同的语法。 (2认同)