分页: 1 / 1
纯菜鸟请教个shell脚本问题,怎样使用文本中的数据做参数?
发表于 : 2013-11-03 21:29
由 ringz
比如有个文本文件内容如下
one two three
有三个词分别用空格隔开
请问如何调用某个单词作为一个值在下面的命令中使用?
比如分别
echo one
echo two
echo three
要求一个shell脚本能处理多个这样的格式的不同文本
Re: 纯菜鸟请教个shell脚本问题
发表于 : 2013-11-03 21:59
由 Jusong
words=$(cat file) #file时包含字符串的文件
for w in $words
do
echo $w
done
Re: 纯菜鸟请教个shell脚本问题
发表于 : 2013-11-03 22:51
由 ringz
Jusong 写了:words=$(cat file) #file时包含字符串的文件
for w in $words
do
echo $w
done
echo我只是简单举个例子,如果说我想只使用第n个单词作为值到下面的命令中使用该怎么做?不知道我说的够不够清楚,麻烦各位懂linux的朋友帮个忙了,谢谢了
Re: 纯菜鸟请教个shell脚本问题
发表于 : 2013-11-03 23:18
由 ringz
是不是应该用awk就可以实现?我研究了下应该是可以只不过 具体怎么弄啊 比如设定参数a b c把第1第二第三个个单词的值给a,bc让abc带到下面的命令中使用
Re: 纯菜鸟请教个shell脚本问题
发表于 : 2013-11-04 0:05
由 Jusong
ringz 写了:Jusong 写了:words=$(cat file) #file时包含字符串的文件
for w in $words
do
echo $w
done
echo我只是简单举个例子,如果说我想只使用第n个单词作为值到下面的命令中使用该怎么做?不知道我说的够不够清楚,麻烦各位懂linux的朋友帮个忙了,谢谢了
你是要做啥呢,如果只是想获取第N个单词留作后面用,你可用for循环计数到第N个词,然后将其保存到一个变量里面,for ( ( i=0; i<n;i++ )) 也是可以使用的
Re: 纯菜鸟请教个shell脚本问题,怎样使用文本中的数据做参数?
发表于 : 2013-11-04 9:00
由 eexpress
你这只是获取文件内容了,不是参数,可以这样
代码: 全选
in=`cat xxx|sed -n '4p'`
没你这样使用参数的,都是用参数解析命令 getopt。
Re: 纯菜鸟请教个shell脚本问题,怎样使用文本中的数据做参数?
发表于 : 2013-11-04 10:20
由 ringz
我这样可以得到我要的值
cat test.txt | awk '{print $2}'
这个可以得到第二个词two
怎样作为一个值到下面使用?
求成品
Re: 纯菜鸟请教个shell脚本问题,怎样使用文本中的数据做参数?
发表于 : 2013-11-04 10:43
由 ringz
我分别运行这三个命令
$var_a
var_a="cat test.txt | awk '{print $2}' "
echo $var_a
输出结果是 cat test.txt | awk '{print $2}'
请问哪里不对
Re: 纯菜鸟请教个shell脚本问题,怎样使用文本中的数据做参数?
发表于 : 2013-11-04 11:15
由 zhw2101024
echo `cat test.txt | awk '{print $2}' `
跟你那个对照一下就知道了
`是~同一个按键的那个字符
Re: 纯菜鸟请教个shell脚本问题,怎样使用文本中的数据做参数?
发表于 : 2013-11-04 11:36
由 ringz
zhw2101024 写了:echo `cat test.txt | awk '{print $2}' `
跟你那个对照一下就知道了
`是~同一个按键的那个字符
对了,谢谢,太谢谢了。解决了我的大问题。
Re: 纯菜鸟请教个shell脚本问题,怎样使用文本中的数据做参数?
发表于 : 2013-11-04 15:32
由 Methuselar
awk的话,可以用system函数,会调用/bin/sh来执行参数字符串:
代码: 全选
yes 'echo echo param1 param2' | head -n 3 | awk '{system($1" "$3); system($2" "$4)}'
除非你的需求很简单,否则还是用shell来作进程操作为好
Re: 纯菜鸟请教个shell脚本问题,怎样使用文本中的数据做参数?
发表于 : 2013-11-05 22:12
由 aerofox
代码: 全选
a=(`cat file`)
echo ${a[2]}
显示第三个单词