gpt4 book ai didi

linux - bash 脚本不在 echo 语句中显示 $strings

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:10:57 26 4
gpt4 key购买 nike

我正在学习 Linux 类(class),我们正在学习 bash 脚本。以下脚本应打印带有字符串值的 echo 语句,但事实并非如此。

#/bin/bash

echo "Enter the first string"
read str1
echo "Enter the second string"
read str2
echo $str1
echo $str2
myLen1=${#str1}
myLen2=${#str2}

if [ ! -z $str1 ]; then
echo Length of the first string is: $myLen1
else
echo Please enter a value for ${str1} with more than 0 characters
fi

if [ ! -z $str2 ]; then
echo Length of the second string is: $myLen2
else
echo Please enter a value for $str2 with more than 0 characters
fi

我已经尝试了以下但没有成功:

echo Please enter a value for ${str2} with more than 0 characters

echo Please enter a value for "$str2" with more than 0 characters

echo "Please enter a value for $str2 with more than 0 characters"

echo "Please enter a value for ${str2} with more than 0 characters"

有什么想法吗?

最佳答案

您说您正在学习一个涵盖 bash 的 Linux 类(class)。因此,我将分享一些一般性观察结果,希望对您有所帮助:

测试和调试
启动您的 bash 脚本 bash -x ./script.sh 或在您的脚本中添加 set -x 以查看调试输出。

语法
正如@drewyupdrew 指出的那样,您需要在脚本顶部指定您正在使用的 shell,例如:#!/bin/bash(您缺少 !).

您正在 [ ! -z $str2 ]-z 运算符比较字符串是否为空,即长度为零。您正在否定与 ! 的比较。

执行相同操作的更简洁的方法是使用 -n 比较运算符。 -n 运算符测试字符串是否不为空。

此外,重要的是测试括号中的变量,即单个 [ ],必须被引用。在 中使用不带引号的字符串! -z,或者甚至只是测试括号内单独的未加引号的字符串通常都可以正常工作,但是,这是一种不安全的做法。

因此,考虑到上述注意事项以及其他一些修改,我得出以下结论:

#!/bin/bash

echo "Enter the first string"
read str1
echo "Enter the second string"
read str2

echo "This is the first string: ${str1}"
echo "This is the second string: ${str2}"

myLen1=${#str1}
myLen2=${#str2}

if [ -n "$str1" ]; then
echo "Length of the first string is: ${myLen1}"
else
echo "Please enter a value for the first string with more than 0 characters"
fi

if [ -n "$str2" ]; then
echo "Length of the second string is: ${myLen2}"
else
echo "Please enter a value for the second string with more than 0 characters"
fi

这有帮助吗?

关于linux - bash 脚本不在 echo 语句中显示 $strings,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37033005/

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