编写一个shell脚本,输入boy显示123,输入girl显示456,如果输入不在上列显示inpot
时间: 2024-02-28 17:27:48 浏览: 16
抱歉,我可以回答这个问题。以下是一个示例脚本:
```
#!/bin/bash
echo "Please enter boy or girl: "
read name
if [ $name == "boy" ]
then
echo "123"
elif [ $name == "girl" ]
then
echo "456"
else
echo "input"
fi
```
请注意,在这个脚本中,输入的字符串必须完全匹配一个选项。如果您需要更宽松的匹配或有多个选项可以匹配,您需要修改这个脚本。
相关问题
第二个for循环没有执行是为什么
这段代码中的两个 `for` 循环是连续的,因此第二个 `for` 循环一定也会被执行。但是,第二个 `for` 循环的代码与第一个 `for` 循环的代码缩进不一致,应该将第二个 `for` 循环的代码缩进到与第一个 `for` 循环的代码同一级别,如下所示:
```
for filepath, dirname, filenames in os.walk(input_path):
f = open('inpot_path.txt', mode='a', encoding='utf-8')
f.writelines(f'"{filepath}"')
f.writelines('\n')
for filepath, dirname, filenames in os.walk(output_path):
g = open('path.txt', mode='a', encoding='utf-8')
g.writelines(f'"{filepath}"')
g.writelines('\n')
```
这样,两个 `for` 循环就可以顺利执行了。
第二个for循环没有执行
非常抱歉,之前我的回答有误。
根据您提供的代码,第二个 `for` 循环确实没有执行。这是因为在第一个 `for` 循环中,`os.walk()` 函数已经遍历了 `input_path` 文件夹,使得 `os.walk()` 的迭代器已经到达了 `input_path` 文件夹的底部,因此第二个 `for` 循环无法再次遍历 `input_path` 文件夹。
如果想要遍历 `output_path` 文件夹,需要重新获取 `os.walk()` 的迭代器,或者将两个 `for` 循环合并成一个。以下是两个解决方案:
重新获取 `os.walk()` 的迭代器:
```
for filepath, dirname, filenames in os.walk(input_path):
f = open('inpot_path.txt', mode='a', encoding='utf-8')
f.writelines(f'"{filepath}"')
f.writelines('\n')
for filepath, dirname, filenames in os.walk(output_path):
g = open('path.txt', mode='a', encoding='utf-8')
g.writelines(f'"{filepath}"')
g.writelines('\n')
```
将两个 `for` 循环合并成一个:
```
for filepath, dirname, filenames in os.walk(input_path):
f = open('inpot_path.txt', mode='a', encoding='utf-8')
f.writelines(f'"{filepath}"')
f.writelines('\n')
g = open('path.txt', mode='a', encoding='utf-8')
for filepath, dirname, filenames in os.walk(output_path):
g.writelines(f'"{filepath}"')
g.writelines('\n')
g.close()
f.close()
```
在这个解决方案中,我们在第一个 `for` 循环内部打开了 `path.txt` 文件,并在第二个 `for` 循环中写入了 `output_path` 文件夹的路径。最后,记得要在 `f.close()` 和 `g.close()` 语句中关闭文件。