我有以下.txt文件:
Marco
Paolo
Antonio
Run Code Online (Sandbox Code Playgroud)
我想逐行读取它,并且对于每行我想为变量分配.txt行值.假设我的变量是$name,流程是:
$name="Marco"$name$name="保罗"我正在尝试使用Bash(使用Ubuntu)获得一个if声明:
#!/bin/bash
s1="hi"
s2="hi"
if ["$s1" == "$s2"]
then
echo match
fi
Run Code Online (Sandbox Code Playgroud)
我尝试了各种形式的if语句,使用[["$s1" == "$s2"]],有和没有引号,使用=,==和-eq,但我仍然得到以下错误:
[hi:命令未找到
我查看了各种网站和教程并复制了这些内容,但是它不起作用 - 我做错了什么?
最后,我想说是否$s1包含$s2,所以我该怎么做?
我刚刚解决了空位...:/我怎么说包含?
我试过了
if [[ "$s1" == "*$s2*" ]]
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
我正在使用SH shell,我正在尝试将字符串与变量的值进行比较,但if条件总是执行为true.为什么?
这是一些代码:
Sourcesystem="ABC"
if [ "$Sourcesystem" -eq 'XYZ' ]; then
echo "Sourcesystem Matched"
else
echo "Sourcesystem is NOT Matched $Sourcesystem"
fi;
echo Sourcesystem Value is $Sourcesystem ;
Run Code Online (Sandbox Code Playgroud)
即使这不起作用:
Sourcesystem="ABC"
if [ 'XYZ' -eq "$Sourcesystem" ]; then
echo "Sourcesystem Matched"
else
echo "Sourcesystem is NOT Matched $Sourcesystem"
fi;
echo Sourcesystem Value is $Sourcesystem ;
Run Code Online (Sandbox Code Playgroud)
其次,我们可以将它与NULL或空字符串匹配吗?
有人可以解释bash脚本之间-eq和之间的区别==吗?
以下是否有任何区别?
[ $a -eq $b ]
和 [ $a == $b ]
只是==当变量包含数字时才使用它吗?
操作员=~叫什么?它只用于比较左侧的右侧吗?
运行测试时为什么需要双方括号?
即. [[ $phrase =~ $keyword ]]
谢谢
我的代码有什么问题?
#!/bin/sh
LOOK_FOR="$1"
for i in `find $2 -name "*jar"`; do
echo "Looking in $i ..."
#jar tvf $i | grep $LOOK_FOR > /dev/null
jar tvf "$i" | grep "$LOOK_FOR"
if [ $? == 0 ] ; then
echo "==> Found \"$LOOK_FOR\" in $i"
fi
done #line 13
Run Code Online (Sandbox Code Playgroud)
产量
wk@wk-laptop:$ sh lookjar.sh org/apache/axis/message/addressing/EndpointReference /media/0C06E20B06E1F61C/uengine/uengine
Looking in /media/0C06E20B06E1F61C/uengine/uengine/defaultcompany/build/uengine_settings.jar ...
[: 13: 1: unexpected operator
Looking in /media/0C06E20B06E1F61C/uengine/uengine/defaultcompany/WebContent/uengine-web/lib/FCKeditor/WEB-INF/lib/commons-fileupload.jar ...
[: 13: 1: unexpected operator
Looking in /media/0C06E20B06E1F61C/uengine/uengine/defaultcompany/WebContent/uengine-web/lib/FCKeditor/WEB-INF/lib/FCKeditor-2.3.jar ...
[: 13: 1: unexpected …Run Code Online (Sandbox Code Playgroud) 我想重新创建这样的东西
if ( arg1 || arg2 || arg 3) {}
Run Code Online (Sandbox Code Playgroud)
我到目前为止,但我收到以下错误
line 11: [.: command not found
if [ $char == $';' -o $char == $'\\' -o $char == $'\'' ]
then ...
Run Code Online (Sandbox Code Playgroud)
我尝试了不同的方法,但似乎没有人尝试过我试过的一些方法
在ZSH脚本中,对于给定的args,我想获得第一个字符串和其余字符串.
例如,当脚本被命名时 test
sh test hello
Run Code Online (Sandbox Code Playgroud)
应该提取h和ello.
http://zsh.sourceforge.net/Doc/zsh_a4.pdf
说:
也可以对非数组值执行订阅,在这种情况下,下标指定要提取的子字符串.例如,如果FOO设置为'foobar',则'echo $ FOO [2,5]'打印'ooba'.
所以,我在一个名为的文件中编写了一个shell脚本 test
echo $1
echo $1[1,1]
Run Code Online (Sandbox Code Playgroud)
终奌站:
$ sh test hello
hello
hello[1,1]
Run Code Online (Sandbox Code Playgroud)
结果失败了.代码有什么问题?
另外我不知道如何从n到最后一个提取subString.也许我必须使用正则表达式拆分阵列?
这可能是另一个问题,所以如果启动新线程是正确的,我会这样做.
感谢@skishore这是进一步的代码
#! /bin/zsh
echo $1
ARG_FIRST=`echo $1 | cut -c1`
ARG_REST=`echo $1 | cut -c2-`
echo ARG_FIRST=$ARG_FIRST
echo ARG_REST=$ARG_REST
if $ARG_FIRST = ""; then
echo nullArgs
else
if $ARG_FIRST = "@"; then
echo @Args
else
echo regularArgs
fi
fi
Run Code Online (Sandbox Code Playgroud)
我不确定如何将字符串贵重物品与字符串进行比较,但对于给定的args …
我可以在unix shell脚本中看到后续构造使用
[ x"$VAR" = x"VALUE" ]
Run Code Online (Sandbox Code Playgroud)
代替
[ "$VAR" = "VALUE" ]
Run Code Online (Sandbox Code Playgroud)
为什么?
我正在尝试编写一个shell脚本,如果当前的git分支与预定义的值不匹配,该脚本应该失败.
if $gitBranch != 'my-branch'; then
echo 'fail'
exit 1
fi
Run Code Online (Sandbox Code Playgroud)
不幸的是,我的shell脚本编写技巧还不尽如人意:如何在我的变量中获取当前的git分支?