gpt4 book ai didi

linux - 基本的 bash 语法问题 - 意外标记附近的语法错误

转载 作者:太空宇宙 更新时间:2023-11-04 11:21:27 25 4
gpt4 key购买 nike

我认为我的脚本做了它应该做的事情,起初我只是有

#!/bin/bash
for file in /home/parallels/Desktop/trashcan/*
do
echo "Would you like to delete - " $file
done

然后我想添加明显缺失的功能,所以我现在有了

#!/bin/bash
for file in /home/parallels/Desktop/trashcan/*
do
echo "Would you like to delete - " $file
read line
if [$line == y|Y]
sudo rm $file
fi
done

这就是我现在所处的位置,我首先尝试使用 case 语句而不是 if,因为我有一个工作脚本,其中包含我需要的 case 语句,但简单地复制它会给我同样的错误 - unexpeted token 附近的语法错误,我得到这个 for fi 并完成

最佳答案

[ 是一个命令,所以它必须与第一个参数用空格分隔:

if [ "$line" = y ] || [ "$line" = Y ]; then
sudo rm "$file"
fi

如果您使用的是bash,您可以用更简洁的方式替换上面显示的标准用法

if [[ $line = [yY] ]]; then
sudo rm "$file"
fi

正如 Keith Thompson 指出的那样,只有准确回答“y”或“Y”才能删除文件。要同时允许"is"或"is",您可以使用

shopt -s extglob
if [[ $line = [yY]?(es) ]]

(只有 bash 的早期版本才需要 shopt 行。从版本 4 开始,扩展模式是条件表达式中的默认模式。)

关于linux - 基本的 bash 语法问题 - 意外标记附近的语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18001127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com