Awk脚本中Shebang的用法及相关执行问题咨询
Awk脚本Shebang用法及相关问题解答
关于FS变量的设置问题
不能直接用tool -v descriptor=1 FS=" , " file来修改FS。原因是:
- 带
#! /bin/awk -f的可执行脚本,会把脚本名后的所有参数原封不动传给awk,但FS=" , "不是awk命令行的合法参数格式——awk要求通过-v选项来定义变量。 - 正确的写法应该是:
tool -v descriptor=1 -v FS=" , " file。如果直接写FS=" , ",awk会把它当成要处理的输入文件名,大概率会报错找不到这个文件。
Bash脚本中能否直接调用该可执行Awk脚本?
可以。只要tool已经通过chmod +x tool设置为可执行,并且脚本所在目录在系统PATH中(或者调用时使用绝对/相对路径,比如./tool),在Bash脚本里直接写tool -v descriptor=1 -v FS=" , " file这类命令,和在终端直接运行的效果完全一致。
能否用awk -f tool -v descriptor=1 file在Bash中执行脚本?
完全没问题。这种写法相当于绕开shebang,直接用awk命令加载脚本文件执行,参数传递规则和直接调用awk命令完全一致。甚至当shebang里的awk路径(比如/bin/awk)和系统实际的awk路径(比如/usr/bin/awk)不一致时,这种方式反而更可靠,能避免路径匹配问题。
内容的提问来源于stack exchange,提问作者Dilna
相关产品推荐
相关产品推荐

