gpt4 book ai didi

linux - bash 中的错误 - 预期存在 -e 的一元运算符

转载 作者:IT王子 更新时间:2023-10-29 00:55:18 24 4
gpt4 key购买 nike

在我使用“read”创建它之后,我想测试两个变量是否存在。如果用户只输入我想要的两个变量之一,它会显示错误。

这是我的代码:

while true;
do
echo "Saisissez deux variables x et y sous la forme [x y]"
read x y

if [ !-e $x ] || [ !-e $y ] <<<<<< problem ligne
then
echo "Vous devez renseigner deux nombres x et y"
elif [ $x = "." ]
then
exit 0
else
calcul $x $y
fi
done

当我输入参数时出现错误:

[: !-e: unary operator expected

感谢您的帮助:)

最佳答案

将其更改为:

if [ -z "$x" ] || [ -z "$y" ]

解释

  • [ 实际上是一个内置的 shell(在提示符下尝试 which [help [);它是 test 的同义词。
  • -z[ 的参数。它的意思是“测试下一个字符串的长度是否为 0;如果是则返回 true;否则返回 false。
  • 始终用双引号将您正在测试的变量括起来!

这是 [ 的有用选项列表,因为我认为您会感兴趣:

-b file = True if the file exists and is block special file. 
-c file = True if the file exists and is character special file.
-d file = True if the file exists and is a directory.
-e file = True if the file exists.
-f file = True if the file exists and is a regular file
-g file = True if the file exists and the set-group-id bit is set.
-k file = True if the files "sticky" bit is set.
-L file = True if the file exists and is a symbolic link.
-p file = True if the file exists and is a named pipe.
-r file = True if the file exists and is readable.
-s file = True if the file exists and its size is greater than zero.
-s file = True if the file exists and is a socket.
-t fd = True if the file descriptor is opened on a terminal.
-u file = True if the file exists and its set-user-id bit is set.
-w file = True if the file exists and is writable.
-x file = True if the file exists and is executable.
-O file = True if the file exists and is owned by the effective user id.
-G file = True if the file exists and is owned by the effective group id.
file1 –nt file2 = True if file1 is newer, by modification date, than file2.
file1 ot file2 = True if file1 is older than file2.
file1 ef file2 = True if file1 and file2 have the same device and inode numbers.
-z string = True if the length of the string is 0.
-n string = True if the length of the string is non-zero.
string1 = string2 = True if the strings are equal.
string1 != string2 = True if the strings are not equal.
!expr = True if the expr evaluates to false.
expr1 –a expr2 = True if both expr1 and expr2 are true.
expr1 –o expr2 = True is either expr1 or expr2 is true.

关于linux - bash 中的错误 - 预期存在 -e 的一元运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13520035/

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