“我怎样才能跑?”;“确认”;在bash中,将输出保存到文件中?
下面的test.txt文件有两行“我怎样才能跑?”;“确认”;在bash中,将输出保存到文件中?,bash,grep,ack,Bash,Grep,Ack,下面的test.txt文件有两行 keyword 1, 2010-10-01 | 1 | 2 | 3 | 4 keyword 2, 2010-10-01 | 1 | 2 | 3 | 4 并希望查看关键字1和关键字2的。我称之为脚本 #!/bin/bash OUTPUTPATH=$1"/" JOB=$2 ID="_"$3".csv" for keyword in "${@:4}" do trKeyWord=$(echo "$keyword" | sed 's/ //g')
keyword 1, 2010-10-01 | 1 | 2 | 3 | 4
keyword 2, 2010-10-01 | 1 | 2 | 3 | 4
并希望查看关键字1
和关键字2
的。我称之为脚本
#!/bin/bash
OUTPUTPATH=$1"/"
JOB=$2
ID="_"$3".csv"
for keyword in "${@:4}"
do
trKeyWord=$(echo "$keyword" | sed 's/ //g')
ack \""$keyword"\" $JOB > $OUTPUTPATH$trKeyWord$BSLD_ID
done
通过
输出文件
keyword1\u test.csv
,keyword2\u test.csv
已创建,但它们是空的!问题一定是我如何使用ack\”“$keyword”\“$JOB
,因为只运行此命令会得到一个空结果。好的,伙计们,这是最后的(工作)答案:
好了,伙计们,这是最后的(有效的)答案:
为什么要将外部双引号反斜杠?如果我只使用“$keyword”,它将执行
ack keyword 1 test.txt
,但我想要ack“keyword 1”test.txt
@tenticon不,这是错误的。前三行中的引号是向后的。如果需要引用变量,而不是固定字符串:OUTPUTPATH=“$1”/;JOB=“$2”;ID=\$3.csv
。但是你应该使用小写的变量名;所有大写变量都用于系统。此外,您可以删除带有${keyword/}
的空格,无需外部命令。为什么要将外部双引号反斜杠?如果我只使用“$keyword”,它将执行ack keyword 1 test.txt
,但我需要ack”keyword 1 test.txt
@tenticon no,那是错误的。你在前三行的引语有点倒转。如果需要引用变量,而不是固定字符串:OUTPUTPATH=“$1”/;JOB=“$2”;ID=\$3.csv
。但是你应该使用小写的变量名;所有大写变量都适用于系统。此外,您可以删除带有${keyword/}
的空格,无需外部命令。呜呜,看来我的答案是错误的,而这一个是正确的,恭喜您。请务必引用您的变量。如果说,outputpath
是myoutput dir
,那么重定向将无法按您想要的方式工作。对于作业
和其他变量也有类似的担忧,看来我的答案是错误的,而这一个是正确的,恭喜你。一定要引用你的变量。如果说,outputpath
是myoutput dir
,那么重定向将无法按您想要的方式工作。作业
和其他变量的类似问题
bash script.sh /home/username/ test.txt test "keyword 1" "keyword 2"
outputpath="$1"/
job="$2"
id=_"$3".csv
for keyword in "${@:4}"
do
trKeyWord=${keyword// }
ack "$keyword" $job > $outputpath$trKeyWord$id
done