#!/bin/bash # 编写一个点名器脚本 # 该脚本,需要提前准备一个 user.txt 文件 # 该文件中需要包含所有姓名的信息,一行一个姓名,脚本每次随机显示一个姓名 while : do #统计 user 文件中有多少用户 line=`cat user.txt |wc ‐l` num=$[RANDOM%line+1] sed -n "${num}p" user.txt sleep 0.2 clear done为啥报错
时间: 2023-11-28 12:47:46 浏览: 85
该脚本报错是因为 `wc` 命令的参数 `-l` 前面的 `-` 符号使用了错误的字符编码,导致解析出错。正确的编码应该是英文状态下的 `-`,而不是中文状态下的 `‐`。
以下是修改后的代码:
```bash
#!/bin/bash
# 编写一个点名器脚本
# 该脚本,需要提前准备一个 user.txt 文件
# 该文件中需要包含所有姓名的信息,一行一个姓名,脚本每次随机显示一个姓名
while :
do
#统计 user 文件中有多少用户
line=`cat user.txt | wc -l`
num=$[RANDOM%line+1]
sed -n "${num}p" user.txt
sleep 0.2
clear
done
```
注意:在使用 sed 命令时,可以直接使用 `-n "${num}p"` 的形式,不需要使用 `sed -n "${num}p" user.txt` 的形式。
相关问题
#!/bin/bash # 连接到远程服务器并运行脚本 ssh user@remote_host '/path/to/script.sh' < /dev/null 怎么运行该脚本
您可以将上述代码保存为一个文本文件,例如 `script.sh`,然后使用终端进入文件所在的目录,运行以下命令:
```
chmod +x script.sh
```
这将赋予该脚本文件执行权限。然后,您可以使用以下命令连接到远程服务器并运行该脚本:
```
ssh user@remote_host '/path/to/script.sh' < /dev/null
```
其中,`user@remote_host` 是您的远程服务器的用户名和主机名,`/path/to/script.sh` 是您的脚本文件的路径。`< /dev/null` 部分是将标准输入重定向到空设备,以避免脚本在运行时等待用户输入。
#!/bin/bash #Program: #User inputs his first name and last name.Program shows his full name. #History: #2020/10/10 sam First release PATH=/bin:/sbin:/user/bin:/user/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH read -p "Please input your first name:" firstname read -p "Please input your last name: " lastname echo -e "\nYour full name is:$firstname $lastname" [root@localhost myshellscript]# chmod u+x sh02.sh [root@localhost myshellscript]# ls sh01.sh sh02.sh [root@localhost myshellscript]# ./sh02.sh Please input your first name:Yuan Please input your last name: Qiong Your full name is:Yuan Qiong [root@localhost myshellscript]#
这是一个简单的 Shell 脚本,它会提示用户输入名字和姓氏,然后将它们拼接起来并输出用户的全名。脚本中用到了 read 命令来读取用户的输入,用 echo 命令来输出结果。通过 chmod 命令将脚本设置为可执行文件,然后通过 ./sh02.sh 命令来执行脚本。执行结果显示了用户输入的名字和姓氏以及拼接后的全名。
阅读全文