[root@localhost ~]# bash example19.sh -c example19 statement for command:example19如何实现
时间: 2024-02-09 08:08:30 浏览: 12
在这个问题中,命令行参数 `-c` 后面的字符串中包含了空格。因此,我们需要在脚本中对该字符串进行处理,以确保能够正确解析出命令。
下面是一个处理该字符串的示例脚本:
```bash
#!/bin/bash
while getopts "c:" option; do
case "${option}" in
c)
command="${OPTARG}"
;;
*)
echo "Invalid option: ${option}" >&2
exit 1
;;
esac
done
# 处理字符串,将空格替换成逗号
command=${command// /,}
# 执行命令
eval "${command}"
```
在上述脚本中,我们使用 `${command// /,}` 的语法来将字符串中的空格替换成逗号。如果您想要使用其他字符进行替换,只需要将其中的逗号替换成相应的字符即可。
如果您想要运行该脚本并执行命令 `example19 statement for command:example19`,可以使用以下命令:
```bash
$ bash example19.sh -c "echo example19,statement,for,command:example19"
```
该命令会输出:
```
example19 statement for command:example19
```
相关问题
[root@localhost ~]# ./CheckHosts.sh -bash: ./CheckHosts.sh: 权限不够
这个错误是因为你没有执行该脚本的权限。你可以使用以下命令来给该脚本添加执行权限:
```
chmod +x CheckHosts.sh
```
然后再次运行该脚本即可。
“[root@centos7 ~]# bash example19.sh -c example19 statement for command:example19 example19.sh:行7: find/bin: 是一个目录”如何不让“example19.sh:行7: find/bin: 是一个目录”出现
这个错误是因为脚本中的 find 命令没有指定要查找的目录,会默认查找当前目录,而当前目录下没有名为 bin 的文件,所以会出现“是一个目录”的错误提示。
要避免这个错误,可以在脚本中指定要查找的目录,比如:
```bash
#!/bin/bash
while getopts "c:" opt; do
case $opt in
c)
result=$(find /path/to/your/dir -name "$OPTARG" 2>/dev/null)
if [ -n "$result" ]; then
echo "Found: $result"
else
echo "Not found"
fi
;;
\?)
echo "Invalid option: -$OPTARG" >&2
exit 1
;;
:)
echo "Option -$OPTARG requires an argument." >&2
exit 1
;;
esac
done
```
这样就可以避免上面的错误提示了。其中 `/path/to/your/dir` 需要替换成你要查找的目录。