相关疑难解决方法(0)

逐行读取文件,将值赋给变量

我有以下.txt文件:

Marco
Paolo
Antonio
Run Code Online (Sandbox Code Playgroud)

我想逐行读取它,并且对于每行我想为变量分配.txt行值.假设我的变量是$name,流程是:

  • 从文件中读取第一行
  • 分配$name="Marco"
  • 做一些任务 $name
  • 从文件中读取第二行
  • 分配$name="保罗"

bash

702
推荐指数
8
解决办法
155万
查看次数

如何比较Bash中'if'语句中的两个字符串变量?

我正在尝试使用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)

但它不起作用.

bash scripting if-statement

572
推荐指数
11
解决办法
102万
查看次数

使用sh shell比较字符串

我正在使用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或空字符串匹配吗?

unix shell sh

156
推荐指数
6
解决办法
43万
查看次数

Bash Equality Operators(==, - eq)

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

以下是否有任何区别?

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

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

bash

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

Bash正则表达式=〜运算符

操作员=~叫什么?它只用于比较左侧的右侧吗?

运行测试时为什么需要双方括号?

即. [[ $phrase =~ $keyword ]]

谢谢

unix bash shell

47
推荐指数
3
解决办法
5万
查看次数

意外的操作员错误

我的代码有什么问题?

#!/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)

bash jar find

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

在Bash中使用多个表达式if语句

我想重新创建这样的东西

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)

我尝试了不同的方法,但似乎没有人尝试过我试过的一些方法

syntax bash if-statement

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

ZSH子串提取

目标

ZSH脚本中,对于给定的args,我想获得第一个字符串和其余字符串.

例如,当脚本被命名时 test

sh test hello
Run Code Online (Sandbox Code Playgroud)

应该提取hello.

ZSH手册

http://zsh.sourceforge.net/Doc/zsh_a4.pdf

说:

也可以对非数组值执行订阅,在这种情况下,下标指定要提取的子字符串.例如,如果FOO设置为'foobar',则'echo $ FOO [2,5]'打印'ooba'.

Q1

所以,我在一个名为的文件中编写了一个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)

结果失败了.代码有什么问题?

Q2

另外我不知道如何从n到最后一个提取subString.也许我必须使用正则表达式拆分阵列?

编辑:Q3

这可能是另一个问题,所以如果启动新线程是正确的,我会这样做.

感谢@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 …

zsh

6
推荐指数
3
解决办法
1万
查看次数

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

为什么'x'用于[x"$ VAR"= x"VALUE"]?

我可以在unix shell脚本中看到后续构造使用

[ x"$VAR" = x"VALUE" ] 
Run Code Online (Sandbox Code Playgroud)

代替

[ "$VAR" = "VALUE" ] 
Run Code Online (Sandbox Code Playgroud)

为什么?

unix shell

3
推荐指数
1
解决办法
1253
查看次数

如何在shell中获取当前的git分支

我正在尝试编写一个shell脚本,如果当前的git分支与预定义的值不匹配,该脚本应该失败.

if $gitBranch != 'my-branch'; then
   echo 'fail'
   exit 1
fi
Run Code Online (Sandbox Code Playgroud)

不幸的是,我的shell脚本编写技巧还不尽如人意:如何在我的变量中获取当前的git分支?

bash shell

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

标签 统计

bash ×8

shell ×4

if-statement ×3

unix ×3

find ×1

jar ×1

scripting ×1

sh ×1

syntax ×1

zsh ×1