在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 14:37:19 浏览: 15
可以使用循环和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转义字符,而使用了双引号来引用变量。
相关问题
写一个shell脚本,查找linux目录下的所有.txt文件是否包含某个字段
好的,我可以为您编写一个查找Linux目录下所有.txt文件中是否包含特定字符串的Shell脚本。请按以下步骤进行操作:
1. 打开一个文本编辑器,如vi或nano。
2. 在编辑器中输入以下Shell脚本代码:
```
#!/bin/bash
# 修改此处为要查找的目录
directory=/linux
# 修改此处为要查找的字符串
string="example"
# 查找目录下所有的 .txt 文件并搜索字符串
for file in $(find $directory -type f -name "*.txt")
do
if grep -q $string "$file"
then
echo "目录$file 包含字符串"
else
echo "目录$file 不包含字符串"
fi
done
```
3. 保存脚本并退出编辑器。
4. 在终端命令行中执行以下命令以使脚本可执行:
```
chmod +x script.sh
```
5. 执行脚本以开始搜索:
```
./script.sh
```
6. 脚本将搜索目录及其子目录中所有.txt文件,并输出它们是否包含指定的字符串。
希望这个脚本能够满足您的需求。如果您有任何其他问题,请告诉我。
linux创建一个名为login.sh的Shell脚本文件
好的,您可以按照以下步骤在Linux系统中创建一个名为login.sh的Shell脚本文件:
1. 打开终端。
2. 进入要保存脚本文件的目录,例如:
```
cd /home/user/scripts
```
这里以/home/user/scripts目录为示例,您可以根据实际情况进行修改。
3. 使用任意文本编辑器,创建一个名为login.sh的文件:
```
nano login.sh
```
如果您想使用其他文本编辑器,可以将nano替换为其他编辑器的命令。
4. 编写脚本内容,例如:
```
#!/bin/bash
echo "Hello, world!"
```
这里的示例代码只是简单地输出一条消息,您可以根据实际需求编写您的脚本。
5. 保存并退出文件。在nano中,您可以使用Ctrl+O保存文件,使用Ctrl+X退出nano编辑器。
6. 使用chmod命令将login.sh文件设置为可执行文件:
```
chmod +x login.sh
```
7. 现在,您可以运行login.sh脚本了:
```
./login.sh
```
这里的示例代码将输出“Hello, world!”消息。
注意:在Linux系统中,Shell脚本需要使用chmod命令设置为可执行文件后才能运行。