在系统上创建一个名为 /root/foo.sh 的脚本,让其提供下列特性: 当运行 /root/foo.sh redhat ,输出为 fedora 当运行 /root/foo.sh fedora ,输出为 redhat 当没有任何参数或者参数不是 redhat 或者 fedora 时,其错误输出产生以下的信息: /root/foo.sh redhat | fedora
时间: 2023-12-24 13:04:19 浏览: 41
好的,我理解了你的问题。以下是 /root/foo.sh 脚本的代码:
```bash
#!/bin/bash
if [[ $# -eq 0 ]]; then
echo "/root/foo.sh redhat | fedora"
elif [[ "$1" == "redhat" ]]; then
echo "fedora"
elif [[ "$1" == "fedora" ]]; then
echo "redhat"
else
echo "/root/foo.sh redhat | fedora"
fi
```
这个脚本会根据输入参数输出不同的信息。如果没有任何参数或者参数不是 redhat 或者 fedora,则输出 "/root/foo.sh redhat | fedora"。如果参数是 redhat,则输出 "fedora"。如果参数是 fedora,则输出 "redhat"。
请注意,在运行脚本之前,你需要先将其设置为可执行文件。你可以使用以下命令设置:
```bash
chmod +x /root/foo.sh
```
然后,你可以使用以下命令来运行脚本:
```bash
/root/foo.sh redhat
```
或者:
```bash
/root/foo.sh fedora
```
希望这个脚本能够满足你的需求!
相关问题
执行脚本foo.sh时,请问以下哪些执行方式不需要foo.sh具有可执行权? A ./foo.sh B sh foo.sh c sh <foo.sh D source foo.sh
以下是不需要foo.sh具有可执行权的执行方式:
B. sh foo.sh
C. sh <foo.sh
. source foo.sh
解释:
A选项需要foo.sh具有可执行权,而B、C、D选项都是通过shell来执行foo.sh脚本,不需要foo.sh具有可执行权。其中B选项是直接执行foo.sh脚本,C选项是将foo.sh脚本作为标准输入传递给shell执行,D选项是在当前shell环境下执行foo.sh脚本。
perl use lib '/root/Foo'; 不能正确的识别Foo.pm
这个问题可能有多种原因导致,以下是一些可能的解决方法:
1. 确认Foo.pm文件确实在/root/Foo目录下,并且文件名大小写正确。如果文件名不正确,可以尝试修改文件名,或者在use语句中使用正确的文件名。
2. 确认/root/Foo目录中是否有其他文件或子目录,它们可能会干扰Perl的模块搜索路径。可以尝试将Foo.pm文件移动到一个新的空目录中,然后使用use语句加载它。
3. 确认/root/Foo目录是否在@INC数组中。可以在Perl脚本中加入以下代码,查看@INC数组中是否包含/root/Foo目录:
```
use Data::Dumper;
print Dumper \@INC;
```
如果@INC数组中不包含/root/Foo目录,可以尝试使用绝对路径来加载Foo.pm文件,或者将/root/Foo目录添加到@INC数组中,例如:
```
use lib '/root/Foo';
use Foo;
```
或者:
```
use lib '/root';
use Foo::Bar;
```
希望这些解决方法对您有帮助。