相关疑难解决方法(0)

如何检查Bash中是否设置了变量?

我如何知道Bash中是否设置了变量?

例如,如何检查用户是否将第一个参数提供给函数?

function a {
    # if $1 is set ?
}
Run Code Online (Sandbox Code Playgroud)

variables bash shell

1417
推荐指数
23
解决办法
119万
查看次数

检查Bash shell脚本中是否存在输入参数

我需要检查输入参数是否存在.我有以下脚本

if [ "$1" -gt "-1" ]
  then echo hi
fi
Run Code Online (Sandbox Code Playgroud)

我明白了

[: : integer expression expected
Run Code Online (Sandbox Code Playgroud)

如何首先检查输入参数1以查看它是否存在?

bash shell

1223
推荐指数
9
解决办法
113万
查看次数

如何使用双括号或单括号,括号,花括号

我对Bash中括号,括号,花括号的用法以及它们的双重或单一形式之间的区别感到困惑.有明确的解释吗?

syntax bash

637
推荐指数
6
解决办法
34万
查看次数

双方括号[[]]比Bash中的单方括号[]更好吗?

最近在一次代码审查中,一位同事声称该[[ ]]构造比[ ]在类似的构造中更受欢迎

if [ "`id -nu`" = "$someuser" ] ; then 
     echo "I love you madly, $someuser"
fi
Run Code Online (Sandbox Code Playgroud)

他无法提供理由.有吗?

syntax bash if-statement

514
推荐指数
8
解决办法
20万
查看次数

Bash Equality Operators(==, - eq)

有人可以解释bash脚本之间-eq和之间的区别==吗?

以下是否有任何区别?

[ $a -eq $b ][ $a == $b ]

只是==当变量包含数字时才使用它吗?

bash

110
推荐指数
4
解决办法
13万
查看次数

带有括号和方括号的IF语句之间的Bash差异

在学习,我会看到四种使用if语句的方式:

  • 单括号 - (...)
  • 双括号 - ((...))
  • 单方支架 - [...]
  • 双方括号 - [[...]]

bash中的Parenthesis和Square Brackets有什么区别.

bash if-statement

58
推荐指数
2
解决办法
2万
查看次数

检查是否存在具有完整路径名的文件时,二元运算符预期错误

pathname=$(cat $HOME/.rm.cfg)
if [ ! -z $pathname/$1 ]
Run Code Online (Sandbox Code Playgroud)

.rm.cfg 是包含以下目录的文件

/家/用户名/ deleted1

$1是文件的名称,例如.玻璃

为什么该行如果[ ! -z $pathname/$1 ]给出二元运算符预期的错误.

unix

12
推荐指数
2
解决办法
6万
查看次数

最简单的C++/C#/ Java程序员的Shell


我对bash编程有点挣扎,因为我似乎不理解语法规则.例如:

read confirm
if [ "$confirm" == "yes" ]; then
    echo "Thank you for saying yes"
else
    echo "Why did you say no?"
fi
Run Code Online (Sandbox Code Playgroud)

在此代码中,您可以使用许多表单来执行相同的操作:

"$confirm" == "yes"
$confirm == "yes"
"$confirm" == yes
$confirm == yes
Run Code Online (Sandbox Code Playgroud)

那么规则是什么?除此之外,它非常严格,所以如果你在'['和'''之间没有空格的情况下编写上面的if语句,你就会收到错误.所以我的问题是:

  1. 谁能让我对shell脚本中的'基本'语法规则有所了解?如果你愿意,你可以把它称为语法.
  2. 据我所知,有三种不同的shell编程脚本.对于像C++,C#和Java这样的语言程序员来说,哪一个最容易学习?

此致,
拉菲德

unix linux shell

4
推荐指数
1
解决办法
824
查看次数

方括号中的壳间距

作为初学者,我没有在任何地方找到答案,关于间距(语法)和解析的规则.

例如.

我可不可以做

if [$# -eq 2] ; 
then 
    llll 
fi
Run Code Online (Sandbox Code Playgroud)

或者我必须在对象之间留下一两个空白,如

if [ $# -eq 2 ] ;
then
   llll
fi
Run Code Online (Sandbox Code Playgroud)

第二个相关的问题是关于它们之间的区别

if [[ $# -eq 2 ]] ;
then
wafwaf
fi
Run Code Online (Sandbox Code Playgroud)

我关心的是前后间距[,].

没有搜索为我提供了一套规则.

syntax shell

2
推荐指数
1
解决办法
1088
查看次数

为什么包含\n的bash变量不等于其副本?

设定后:

var1="a\nb"
var2="$var1"
Run Code Online (Sandbox Code Playgroud)

我期待$var1并且$var2平等; 然而:

[[ $var1 == $var2 ]] && echo yes || echo no
Run Code Online (Sandbox Code Playgroud)

回报no.这是为什么?

variables bash if-statement newline

2
推荐指数
1
解决办法
103
查看次数

为什么有些人在shell脚本的if条件后面加上分号?

我刚刚习惯了shell脚本编写,并且遇到了一些我不太确定如何使用Google的内容。

在我阅读的教程中,它表明编写if语句的正确方法是这样的:

if [ $a == $b ]; then
  echo "a == b"
fi
Run Code Online (Sandbox Code Playgroud)

但是我在我们的代码库中看到省略了半冒号的地方:

if [ $a == $b ] then
  echo "a == b"
fi
Run Code Online (Sandbox Code Playgroud)

我也看过双方括号:

if [[ $a == $b ]]; then
  echo "a == b"
fi
Run Code Online (Sandbox Code Playgroud)

当我在bash中测试了所有这些功能后,似乎没有什么区别。有区别吗?它与兼容性有关吗?正确的风格是什么?

bash shell

0
推荐指数
1
解决办法
753
查看次数

Shell脚本(如果未评估条件以显示用户的帮助信息)

我编写了一个帮助菜单,以供参考shell脚本的使用 my_script.sh

echo $'\n\n'
echo $(printf '=%.0s' {1..100})
printf ' %.0s' {1..40}
echo "Welcome"
echo $(printf '=%.0s' {1..100})
echo $'\n'

arg=$1
echo "Input : $arg"
echo

if [[ arg -eq "-h" ]] || [[ arg -eq "-H" ]] || [[ arg -eq "-help" ]] || [[ arg -eq "-Help" ]] || [[ arg -eq "--h" ]] || [[ arg -eq "--H" ]] || [[ arg -eq "--help" ]] || [[ arg -eq "--Help" ]]; then
    echo "Help menu requested...."
    echo …
Run Code Online (Sandbox Code Playgroud)

linux bash shell

0
推荐指数
1
解决办法
83
查看次数

在bash shell中,如何分类(),(()),[],[[]]和{}的用法?

我是Shell的新手。而且我)用的使用(糊涂一点点,[],{}像shell脚本$()[ [] ]${}等等。我想对它们的用法进行分类,以更有效地学习shell脚本。

linux bash shell

-2
推荐指数
1
解决办法
3428
查看次数

标签 统计

bash ×10

shell ×7

if-statement ×3

linux ×3

syntax ×3

unix ×2

variables ×2

newline ×1