为了账号安全,请及时绑定邮箱和手机立即绑定

以下内容是关于shell if 参数的,求解释~

以下内容是关于shell if 参数的,求解释~

慕尼黑8549860 2022-01-13 15:11:21
1.如果a>b且a<c,在SHELL里怎么写?是if [ a>b -a a<c ]吗?2.如果a>b或a<c,在SHELL里怎么写?是if [ a>b -o a<c ]吗?3.如果a>b或(a<c且a<d)怎么写呢?"-o"是or的意思,"-a"是and的意思吗?4."||"和"&&"在SHELL里可以用吗?也就是第一个写成if [ a>b && a<c ]也可以吗?在SHELL的if条件里"-eq"和"==""-ne"和"!=""-lt"和"<"等是同一个意思吗?这里看的越来越迷糊了..... 请哪位高手多指点指点!
查看完整描述

2 回答

?
LEATH

TA贡献1936条经验 获得超6个赞

1) bash
a=3 ; b=2 ; c=4
if (( a > b )) && (( a < c ))

或者

if [[ $a > $b ]] && [[ $a < $c ]]

或者

if [ $a -gt $b -a $a -lt $c ]

2) a=3 ; b=2 ; c=4

if (( a > b )) || (( a < c ))

或者
if [[ $a > $b ]] || [[ $a < $c ]]

或者
if [ $a -gt $b -o $a -lt $c ]

3) -o = or , -a = and , 但我一向只用 || 或者 &&
4) 可用, 但是要两个独立的 [ ] , [[ ]] 或 (( ))
看 1)
5) -ne 比较数字 (numberic) ; != 比较字符 (string), 但后者拿来
比较数字也可,只是不是标准用法
-lt 是等同 < , 但 < 只能在 shell 的数值操作符 (( )) 或
者 逻缉操作符 [[ ]] 才可使用, -lt , -eq , -gt , -ge
-le , 这些是 test , 就是 [ ] 这个内建命令使用的条件操
作符, 数字用, = , != 字符用, == 这个该是 [[ ]] 用的,
可用来比对正规表示式, 但用在 [ ] 也可,只是不太正统用法



查看完整回答
反对 回复 2022-01-16
?
喵喵时光机

TA贡献1846条经验 获得超7个赞

不同的shell 有不同的写法,以下是各个shell的比较:
Feature
C/TC
Bourne
Bash
Korn

Variables:

Assigning values to local variables
set x = 5
x=5
x=5
x=5

Assigning variable attributes

declare or

typeset

typeset

Assigning values to environment variables
setenv NAME Bob
NAME='Bob'; export NAME
export NAME='Bob'
export NAME='Bob'

Read-Only Variables:

Accessing variables

echo $NAME

set var = net

echo ${var}work

network

echo $NAME

var=net

echo ${var}work

network

echo $NAME

var=net

echo ${var}work

network

echo $NAME or print $NAME

var=net

print ${var}work

network

Number of characters
echo $%var (tcsh only)
N/A
${#var}
${#var}

Special Variables:

PID of the process
$$
$$
$$
$$

Exit status
$status, $?
$?
$?
$?

Last background job
$! (tcsh only)
$!
$!
$!

Arrays:

Assigning arrays
set x = ( a b c )
N/A

y[0]='a'; y[2]='b'; y[2]='c'

fruit=(apples pears peaches plums)

y[0]='a'; y[1]='b'; y[2]='c'

set –A fruit apples pears plums

Accessing array elements
echo $x[1] $x[2]
N/A
echo ${y[0]} ${y[1]}
print ${y[0]} ${y[1]}

All elements
echo $x or $x[*]
N/A
echo ${y[*]}, ${fruit[0]}
print ${y[*]}, ${fruit[0]}

No. of elements
echo $#x
N/A
echo $y{#[*]}
print ${#y[*]}

Command Substitution:

Assigning output of command to variable
set d = `date`
d=`date`
d=$(date) or d=`date`
d=$(date) or d=`date`

Accessing values

echo $d

echo $d[1], $d[2],

...

echo $#d

echo $d
echo $d
print $d

Command Line Arguments (Positional Parameters):

Accessing

$argv[1], $argv[2] or

$1, $2 ...

$1, $2 ... $9
$1, $2, ... ${10} ...
$1, $2, ... ${10} ...

Setting positional parameters
N/A

set a b c

set `date`

echo $1 $2 ...

set a b c

set `date` or set $(date)

echo $1 $2 ...

set a b c

set `date` or set $(date)

print $1 $2 ...

No. of command line arguments

$#argv

$# (tcsh)

$#
$#
$#

No. of characters in $arg[number]
$%1, $%2, (tcsh)
N/A
N/A
N/A

Metacharacters for Filename Expansion:

Matches for:

Single character
?
?
?
?

Zero or more characters
*
*
*
*

One character from a set
[abc]
[abc]
[abc]
[abc]

One character from a range of characters in a set
[a–c]
[a–c]
[a-c]
[a–c]

One character not in the set

N/A (csh)

[^abc] (tcsh)

[!abc]
[!abc]
[!abc]

? matches zero or one occurrences of any pattern in the parentheses. The vertical bar represents an OR condition; e.g., either 2 or 9. Matches abc21, abc91, or abc1.
abc?(2|9)1
abc?(2|9)1

Filenames not matching a pattern
^pattern (tcsh)

I/O Redirection and Pipes:

Command output redirected to a file
cmd > file
cmd > file
cmd > file
cmd > file

Command output redirected and appended to a file
cmd >> file
cmd >> file
cmd >> file
cmd >> file

Command input redirected from a file
cmd < file
cmd < file
cmd < file
cmd < file

Command errors redirected to a file
(cmd > /dev/tty)>&errors
cmd 2>errors
cmd 2> file
cmd 2> errors

Output and errors redirected to a file
cmd >& file
cmd > file 2>&1
cmd >& file or cmd &> file or cmd > file 2>&1
cmd > file 2>&1

Assign output and ignore noclobber
cmd >| file
N/A
cmd >| file
cmd >| file

here document

cmd << EOF

input

EOF

cmd << EOF

input

EOF

cmd << EOF

input

EOF

cmd << EOF

input

EOF

Pipe output of one command to input of another command
cmd | cmd
cmd | cmd
cmd | cmd
cmd | cmd

Pipe output and error to a command
cmd |& cmd
N/A
N/A
(See coprocesses)

Coprocess
N/A
N/A
N/A
command |&

Conditional statement

cmd && cmd

cmd || cmd

cmd && cmd

cmd || cmd

cmd && cmd

cmd || cmd

cmd && cmd

cmd || cmd

Reading from the Keyboard:

Read a line of input and store into variable(s)

set var = $<

set var = 'line'

read var

read var1 var2...

read var

read var1 var2...

read

read -p prompt

read -a arrayname

read var

read var1 var2...

read

read var?"Enter value"

Arithmetic:

Perform calculation
@ var = 5 + 1
var=`expr 5 + 1`

(( var = 5 + 1 ))

let var=5+1

(( var = 5 + 1 ))

let var=5+1

Tilde Expansion:

Represent home directory of user
~username
N/A
~username
~username

Represent home directory
~
N/A
~
~

Represent present working directory
N/A
N/A
~+
~+

Represent previous working directory
N/A
N/A
~-
~–

Aliases:

Create an alias
alias m more
N/A
alias m=more
alias m=more

List aliases
alias
alias, alias -p
alias, alias –t

Remove an alias
unalias m
N/A
unalias m
unalias m

History:

Set history
set history = 25
N/A
automatic or HISTSIZE=25
automatic or HISTSIZE=25

Display numbered history list
history
history, fc -l
history, fc –l

Display portion of list selected by number
history 5
history 5

history 5 10

history –5

Re-execute a command

!! (last command)

!5 (5th command)

!v (last command starting with v)

!! (last command)

!5 (5th command)

!v (last command starting with v)

r (last command)

r5 (5th command)

r v (last command starting with v)

Set interactive editor
N/A (csh)

bindkey -v

or bindkey -e (tcsh)
N/A

set -o vi

set -o emacs

set -o vi

set -o emacs

Signals:

Command
onintr
trap
trap
trap

Initialization Files:

Executed at login
.login
.profile
.bash_profile
.profile

Executed every time the shell is invoked
.cshrc
N/A
BASH_ENV=.bashrc (or other filename) (bash 2.x)

ENV=.bashrc
ENV=.kshrc (or other filename)

Functions:

Define a function
N/A
fun() { commands; }
function fun { commands; }
function fun { commands; }

Call a function
N/A

fun

fun param1 param2 ...

fun

fun param1 param2 ...

fun

fun param1 param2 ...

Programming Constructs:

if conditional

if ( expression ) then

commands

endif

if { ( command ) } then

commands

endif

if [ expression ]

then

commands

fi

if command

then

commands

fi

if [[ string expression ]]

then

commands

fi

if (( numeric expression ))

then

commands

fi

if [[ string expression ]]

then

commands

fi

if (( numeric expression ))

then

commands

fi

if/else conditional

if ( expression ) then

commands

else

commands

endif

if command

then

commands

else

...

fi

if command

then

commands

else

...

fi

if command

then

commands

else

...

fi

if/else/elseif conditional

if (expression) then

commands

else if (expression) then

commands

else

commands

endif

if command

then

commands

elif command

then

commands

else

commands

fi

if command

then

commands

elif command

then

commands

else

commands

fi

if command

then

commands

elif command

then

commands

else

commands

fi

goto

goto label

...

label:

N/A
N/A
N/A

switch and case

switch ("$value")

case pattern1:

commands

breaksw

case pattern2:

commands

breaksw

default:

commands

breaksw

endsw

case "$value" in

pattern1) commands

;;

pattern2) commands

;;

*) commands

;;

esac

case "$value" in

pattern1) commands

;;

pattern2) commands

;;

*) commands

;;

esac

case "$value" in

pattern1) commands

;;

pattern2) commands

;;

*) commands

;;

esac

Loops:

while

while (expression)

commands

end

while command

do

command

done

while command

do

command

done

while command

do

commands

done

for/foreach

foreach var (wordlist)

commands

end

for var in wordlist

do

commands

done

for var in wordlist

do

commands

done

for var in wordlist

do

commands

done

until
N/A

until command

do

commands

done

until command

do

commands

done

until command

do

commands

done

repeat

repeat 3 "echo hello"

hello

hello

hello

N/A
N/A
N/A

select
N/A
N/A

PS3="Please select a menu item"

select var in wordlist

do

commands

done



查看完整回答
反对 回复 2022-01-16
  • 2 回答
  • 0 关注
  • 156 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信