我有一个awk
在终端上运行良好的命令:这个awk
命令根据它们的列标题创建不同的文件。awk 命令:
for((i=2;i<5;i++)); do
awk -v i=$i 'BEGIN{OFS=FS="\t"}NR==1{n=$i}{print $1,$i > n".txt"}' ${Batch}.result.txt
done
Run Code Online (Sandbox Code Playgroud)
合并到 shell 脚本中的相同命令显示错误:
Syntax error: Bad for loop variable
Run Code Online (Sandbox Code Playgroud)
它的工作方式如下。我按照建议尝试使用 she-bang,但它重复了错误。
for i in 2 3 4; do awk -v i=$i 'BEGIN{OFS=FS="\t"}NR==1{n=$i}{print $1,$i n".txt"}'
Run Code Online (Sandbox Code Playgroud)
Ini*_*ian 11
我认为该错误与您的Awk
命令无关。我认为您正在 POSIX bourne shellsh
中运行它,其中((
不支持for-loop 构造。
运行脚本,将shebang 设置bash
为安装路径。通常它是安全的#!/usr/bin/env bash
,因为#!/usr/bin/env
搜索PATH
的bash
,而bash
不是总在/bin
,特别是在非Linux系统。对于 OpenBSD 系统,它在/usr/local/bin
.
脚本很可能是由/bin/sh
而不是由bash
(ksh93
或任何其他理解类 Cfor
循环的shell )解释的。
确保脚本有一个#!
-line 说
#!/bin/bash
Run Code Online (Sandbox Code Playgroud)
在文件的最顶部(更改为要使用的 shell 和路径),或者使用正确的解释器显式运行脚本,例如:
bash ./scriptname
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11830 次 |
最近记录: |