我已经定义了以下变量:
myVar=true
Run Code Online (Sandbox Code Playgroud)
现在我想按照以下方式运行:
if [ myVar ]
then
echo "true"
else
echo "false"
fi
Run Code Online (Sandbox Code Playgroud)
上面的代码确实有效,但如果我尝试设置
myVar=false
Run Code Online (Sandbox Code Playgroud)
它仍将输出真实.可能是什么问题?
编辑:我知道我可以做一些表格
if [ "$myVar" = "true" ]; then ...
Run Code Online (Sandbox Code Playgroud)
但它有点尴尬.
谢谢
在我的.bashrc中,我有一个名为hello的函数:
function hello() {
echo "Hello, $1!"
}
Run Code Online (Sandbox Code Playgroud)
我希望能够从shell调用hello(),如下所示:
$ hello Lloyd
Run Code Online (Sandbox Code Playgroud)
得到输出:
> Hello, Lloyd!
Run Code Online (Sandbox Code Playgroud)
有什么诀窍?
(当然,我想到的真正功能更复杂.)
编辑:这真的是由函数中的语法错误引起的,我想!:(
function coolness() {
if[ [-z "$1"] -o [-z "$2"] ]; then
echo "Usage: $0 [sub_package] [endpoint]";
exit 1;
fi
echo "Hi!"
}
Run Code Online (Sandbox Code Playgroud) 是否有if用于bash脚本的所有开关的列表?有时我看到有人使用它,我想知道他们正在使用的切换实际上是做什么的.
例子就是-z这一个.我知道如何使用它,但我不知道它是从哪里得到的.
if [ -z "$BASH_VERSION" ]; then
echo -e "Error: this script requires the BASH shell!"
exit 1
fi
Run Code Online (Sandbox Code Playgroud)
任何参考,指南,帖子,答案将不胜感激.
我正在尝试建立SSH连接并查看是否存在目录,如果该目录存在,我想在进行SSH调用的本地计算机上运行命令.
这是我尝试过的:
if [ ssh -t username@ssh_server -d /directory ]
then
{
commands....
}
fi
Run Code Online (Sandbox Code Playgroud)
这样的事情可能吗?
在我的bash脚本中,我有一个函数为后面的main函数的条件返回0或1(true或false).
function1 () {
if [[ "${1}" =~ "^ ...some regexp... $" ]] ; then
return 1
else
return 0
fi
}
Run Code Online (Sandbox Code Playgroud)
然后在我的主要功能:
main () {
for arg in ${@} ; do
if [ function1 ${arg} ] ; then
...
elif [ ... ] ; then
...
fi
done
}
Run Code Online (Sandbox Code Playgroud)
然而,当我运行这个脚本时它总是给我一个错误信息"[:function1:一元运算符预期"
有人可以帮我吗?
使用bash,检查变量是否为空的最佳方法是什么?
如果我使用:
if [ -z "$VAR" ]
Run Code Online (Sandbox Code Playgroud)
正如在论坛中所建议的那样,这适用于未设置的变量,但是当变量设置为空时它是正确的.建议?
首先,我已经阅读了许多带有 if 子句的帖子(见底部)以在文件中搜索特定字符串并按照 1to1 的顺序关注这些帖子,但是我无法让我的脚本正常工作。/etc/fstab如果尚不存在,我想输入:
#!/bin/bash
fstab=/etc/fstab
if grep -q "poky-disc" "$fstab"
then
echo "#poky-disc" >> /etc/fstab
echo "/dev/sdb1 /media/poky ext4 defaults 0 2" >> /etc/fstab
else
echo "Entry in fstab exists."
fi
Run Code Online (Sandbox Code Playgroud)
提前感谢您的帮助。这些是类似的帖子,并没有进一步帮助我:
我有一个带有五列的制表符分隔文本文件 (animals.txt):
302947298 2340974238 0 0 cat
345098948 8345988989 0 0 dog
098982388 2098340923 0 0 fish
932840923 0923840988 0 0 parrot
Run Code Online (Sandbox Code Playgroud)
我有另一个文件,mess.txt.gz,它是使用 GNU zip(.gz 文件)压缩的。它基本上看起来像一串巨大的字母:
sdihfoiahdfosparrotdhiafoihsdfoijaslkdogoieufoiweuf
Run Code Online (Sandbox Code Playgroud)
基本上,对于制表符分隔的文本文件中的每一行,我想查看此 .gz 文件中是否存在任何动物名称。
理想情况下,它会返回如下内容:
302947298 2340974238 0 0 cat no
345098948 8345988989 0 0 dog yes
098982388 2098340923 0 0 fish no
932840923 0923840988 0 0 parrot yes
Run Code Online (Sandbox Code Playgroud)
目前我正在做以下事情:
gunzip -cd mess.txt.gz | grep cat
gunzip -cd mess.txt.gz | grep dog
Run Code Online (Sandbox Code Playgroud)
为了自动化,我尝试了以下方法:
cat animals.txt | awk '{print $5}' > animal_names.txt
cat animal_names.txt | …Run Code Online (Sandbox Code Playgroud) bash ×10
shell ×4
if-statement ×2
boolean ×1
function ×1
grep ×1
path ×1
sh ×1
shell-exec ×1
ssh ×1