你好我们在linux shell脚本中编写代码,但代码只能从键盘读取我想改变它来读取文件,例如如果我写./car.sh lamborghini.txt它应该给我最昂贵的模型
代码是这样的:
#!/bin/sh
echo "Choose one of them"
read manu
sort -t';' -nrk3 auto.dat > auto1.dat
grep $manu auto1.dat | head -n1 | cut -d';' -f2
和auto.dat文件包含以下内容:
Lamborghini;Aventador;700000
Lamborghini;Urus;200000
Tesla;ModelS;180000
Tesla;ModelX;140000
Ford;Mustang;300000
Ford;Focus;20000
答案 0 :(得分:0)
read
命令始终从stdin读取。您可以使用重定向 <
来读取文件的内容。
$manu
#!/bin/sh
read manu < "$1"
sort -t';' -nrk3 auto.dat | grep "$manu" | head -n1 | cut -d';' -f2
此版本的脚本需要文件名作为命令行参数。所述文件的第一行将存储在$manu
中。例如:
./car.sh fileWithSelection.txt
该文件应包含您在旧脚本中输入的文本。
$manu
在我看来,直接解释命令行参数更有意义,而不是使用文件并将它们传递给脚本。
#!/bin/sh
manu="$1"
sort -t';' -nrk3 auto.dat | grep "$manu" | head -n1 | cut -d';' -f2
示例:
./car.sh "text you would have entered in your old script."
答案 1 :(得分:0)
您可以尝试这种方式,但文件Tesla.txt必须包含特斯拉
[tag_constants.TRAINING]