在linux系统上给你一个文本文件1.txt: 6 60030 7 60031 14 60032 15 60033 写一个shell脚本让它达到如下的效果: /opt/gameworld.sh --fileid 6 --serverid 60030 /opt/gameworld.sh --fileid 7 --serverid 60031 /opt/gameworld.sh --fileid 14 --serverid 60032 /opt/gameworld.sh --fileid 15 --serverid 60033 要求:--fileid和--serverid后面的值都需要再脚本中用变量代替
时间: 2024-03-22 12:37:19 浏览: 54
可以使用循环和awk命令来实现这个效果,具体的脚本如下:
```bash
#!/bin/bash
file="1.txt"
while read -r line
do
fileid=$(echo "$line" | awk '{print $1}')
serverid=$(echo "$line" | awk '{print $2}')
echo "/opt/gameworld.sh --fileid $fileid --serverid $serverid"
done < "$file"
```
首先定义了一个变量file,用来存放要处理的文件名。
然后使用while循环读取文件中的每一行,使用awk命令分别提取出文件ID和服务器ID的值,并存放到对应的变量中。
最后使用echo命令输出对应的命令行,其中使用变量代替了--fileid和--serverid后面的值。
注意,为了防止文件中的空格或制表符对脚本的解析产生影响,使用了-r参数来禁止解析backslash转义字符,而使用了双引号来引用变量。
阅读全文