Shell_1
Posted LhTian
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell_1相关的知识,希望对你有一定的参考价值。
基础语法
定义变量:
xxx=""
使用变量:
echo $xxx or echo $xxx
将变量定义为只读:
xxx=""
readonly xxx
删除变量:
unset xxx
字符串:单引,双引,无引都可
单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。
双引号里可以有变量
双引号里可以出现转义字符
字符串拼接:
eg:xxx="hello,"$your_name"!"
获取字符串长度:
echo $#xxx 变量为数组时,$#string 等价于 $#string[0]
提取子字符串:
echo $string:1:4
查找子字符串:(但好像只能查找第一个)
echo `expr index "$xxx" iy`
string="runoob is a great site"
echo `expr index "$string" io` # 输出 4
定义数组:
数组名=(值1 值2 ... 值n)
单独定义数组中分量:xxx[n]=yyy
读取数组:
$数组名[下标]
echo $array_name[@] #读取所有元素
获取数组的长度:
# 取得数组元素的个数
length=$#array_name[@] or length=$#array_name[*]
# 取得数组单个元素的长度
lengthn=$#array_name[n]
注释:
单行:#
多行:<<EOF
xxx
EOF
<<\'
xxx
\'
<<!
xxx
!
Shell中的空格字符串转换
考虑您有一个shell变量foo
,其值为
echo $foo
# Output: elementA elementB elementC
现在,我想向元素添加相同的前缀__PREFIX__
和后缀__SUFFIX__
,以便
echo $new_foo
# Output: __PREFIX__ElementA__SUFFIX__ __PREFIX__ElementB__SUFFIX__ __PREFIX__ElementC__SUFFIX__
最简单的方法是什么?
由于我不确定如何调用此类操作,因此标题可能无法正确描述问题。建议非常欢迎!
proper数组,
foo=(a b c)
您可以使用/#
运算符添加前缀,并使用/%
运算符添加后缀。不过,它确实必须分两个步骤进行。
$ foo=(a b c) $ foo=("$foo[@]/#/__PREFIX__") $ foo=("$foo[@]/%/__SUFFIX__") $ declare -p foo declare -a foo=([0]="__PREFIX__a__SUFFIX__" [1]="__PREFIX__b__SUFFIX__" [2]="__PREFIX__c__SUFFIX__")
如果只用空格分隔的字符串,则可以使用//
:
$ foo="a b c" $ foo="__PREFIX__$foo// /__SUFFIX__ __PREFIX____SUFFIX__" $ echo "$foo" __PREFIX__a__SUFFIX__ __PREFIX__b__SUFFIX__ __PREFIX__c__SUFFIX__
sed
,您可以做:prefix=__PREFIX__
suffix=__SUFFIX__
new=$(sed -E "s/(\S)(\s|$)/\1$suffix /g;s/(\s|^)(\S)/$prefix\2/g" <<< $foo)
输出:
__PREFIX__elementA__SUFFIX__ __PREFIX__elementB__SUFFIX__ __PREFIX__elementC__SUFFIX__
foo="elementA elementB elementC"
PREFIX=__PREFIX__
SUFFIX=__SUFFIX__
for f in $foo
do
new_foo="$new_foo $PREFIX$f$SUFFIX"
done
echo $new_foo
以上是关于Shell_1的主要内容,如果未能解决你的问题,请参考以下文章
未找到:https://repo1.maven.org/maven2/org/jetbrains/sbt-idea-shell_2.12_1.0/2017.2/sbt-idea-shell-2017.