日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux修改某个用户的数组,linux-shell编程1:变量和数组

發布時間:2023/12/10 linux 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux修改某个用户的数组,linux-shell编程1:变量和数组 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Shell

用戶與系統內核之間交流平臺

Shell類型

/bin/sh

/bin/bash(系統默認bash)

/bin/tcsh

/bin/csh

/etc/shells 放置當前系統可用shell

為什么需要shell編程

1.減少繁瑣工作的重復進行,減少錯誤

2.提高工作效率

3.事態的批量化進行

Bash特點功能

1.查看命令歷史(1000條)

history 查看歷史命令

history -c 清空歷史命令

/etc/profile

2.別名

alias h5='head -5'

unalias h5

3.管道符重定向

ps aux | grep '3306'

echo "passewd" | passwd --stdin username

ls > list.txt

ls -l >> list.txt

mail -s test xx@baidu.com < list.txt

find / -user yuxiang -type f > all 2> error

4.命令序列的使用技巧

在linux中,可以使用控制字符(;,&&,||,&)

&:將程序后臺執行

firefox & 可以用ctrl+z將進程后臺執行

jobs 查看后臺任務

fg n 將后臺任務拿到前臺

;:組合多個命令,命令間沒有任何邏輯關系,順序執行

[root@server ~]# ls /tmp;ls /root;ls /home

&&:組合多個命令,前一個命令執行成功才能執行后一個

make && make install

[root@server ~]# ls -lh initial-setup-ks.cfg && ls .

||:組合多個命令,前一個執行失敗,才會執行后一個

[root@server ~]# id yuxiang &> /dev/null && echo "hi,yuxiang" || echo "No such user"

5.花括號{}使用技巧

通過花括號可以生成命令行或者腳本所需的字串

括號中可以包含連續的序列或使用逗號分割多個項目

連續的序列需要包括一個起點和一個終點,倆者之間用“..”分割

[root@server ~]# mkdir /tmp/dir{1,2,3}

[root@server ~]# mkdir /tmp/{dir4,dir5,dir6}

[root@server ~]# mkdir /tmp/dir{7..9}

[root@server ~]# rm -rf /tmp/dir{1..9}

[root@server ~]# echo user{1,5,9}

user1 user5 user9

[root@server ~]# echo {0..10}

0 1 2 3 4 5 6 7 8 9 10

[root@server ~]# echo {0..10..2}

0 2 4 6 8 10

[root@server ~]# echo {0..10..3}

0 3 6 9

[root@server ~]# echo {2..-1}

2 1 0 -1

[root@server ~]#

變量

變量是用來存儲非固定值的載體,它具有一個值,以及零個或多個屬性

創建變量語法格式:

name=[value]

1.變量如果沒有指定值(value),變量將被賦值為空字符串

2.變量定義后調用《$變量名》來調用變量

3.變量的名稱為字母,數字,下劃線組成

4.但首字母不能為數字,=號間無空格

5.變量名無硬性的大小寫要求,建議使用大寫或首字母大寫

6.變量的值可修改,屬性可以通過typeset進行修改

NAME="魚老板"

echo $NAME

typeset -r NAME #設置變量屬性只讀 -r

7.可以利用declare創建一個空變量,暫時不賦值

[root@server ~]# declare NUMBER #預先定義變量NUMBER

[root@server ~]# typeset -i NUMBER #設置NUNBER屬性為整數型

[root@server ~]# NUMBER=test #強制賦值給變量

[root@server ~]# echo $NUMBER #打印變量結果為0

0

[root@server ~]# NUMBER=200 #賦值整數成功

[root@server ~]# echo $NUMBER

200

8.通過read命令設置變量

read從標準輸入中讀取變量值(類似于python中的input)

使用-p選項添加相應的提示信息

[root@server ~]# read SAY

hello ervery

[root@server ~]# echo $SAY

hello ervery

[root@server ~]# read -p "plese tail me do you have girl friand:" SAY

plese tail me do you have girl friand:sorry,I do

[root@server ~]# echo $SAY

sorry,I do

[root@server ~]#

9.set 查看當前系統中設置的所有變量及值:set |grep ...

unset #刪除變量

unset 變量名

[root@server ~]# set | grep SAY

SAY='sorry,I do'

[root@server ~]# unset SAY

[root@server ~]# set | grep SAY

_=SAY

[root@server ~]#

變量的作用范圍

使用name=[value]創建變量,默認在當前shell中有效,子進程不會繼承這樣的變量

使用export命令將變量放置到環境變量中,此時可全局使用

export可以直接定義環境變量并賦值

也可以先定義一個普通的用戶變量,然后通export轉換為環境變量

環境變量

Bash為我們預設了很多環境變量,實際操作中我們可以直接調用這些變量(Bash手冊)

SHELL 查看當前系統的默認Bash

HOSTNAME 查看系統的主機名

BASHPID 查看當前Bash進程的進程號

UID 查看當前用戶的ID號

HOME 查看當前用戶的家目錄

PWD 查看當前工作目錄

PS1 主命令提示符

PS2 次命令提示符

RANDOM 0-32767之間的隨機數

PATH 命令搜索路徑

#path

添加PATH路徑:

PATH=$PATH:/root #追加

注意:絕對不能用下列方法

PATH=/root #此操作代表覆蓋

位置變量(主要體現在腳本中)

位置變量使得腳本中命令可以調用腳本時不同位置的參數,參數之間一般用空格隔開

$0 代表當前shell程序的文件名稱

$1 代表shell程序的第一個參數

$2 代表shell程序的第二個參數

以此類推($1-$9)

$# 代表shell程序所有參數的個數

$*和$@ 都代表所有參數的內容,區別是$*將所有參數作為一個整體,而$@將所有參數作為個體看待

$$ 代表當前進程的ID號

%? 代表程序的退出代碼(0代表執行成功,非0代表執行失敗)

[root@server ~]# cat weizhi.sh

#!/bin/bash

#This is test script for parme!

echo "This is the file name:$0"

echo "This is the first parm:$1"

echo "This sis the second parm:$2"

echo "This is the number of all parm:$#"

echo "This is the all parm:$*"

echo "This is the all parm:$@"

echo "This is PID:$$"

echo "This is parm over:$?"

[root@server ~]#

[root@server ~]# bash weizhi.sh a_1 b_2 c_3 d_4

This is the file name:weizhi.sh

This is the first parm:a_1

This sis the second parm:b_2

This is the number of all parm:4

This is the all parm:a_1 b_2 c_3 d_4

This is the all parm:a_1 b_2 c_3 d_4

This is PID:5224

This is parm over:0

[root@server ~]#

變量的展開與替換

#一下四組用于需要確定變量是否正確設置環境

${varname:-work} #當varname存在且不為空,則返回varname值,否則返回word

${varname:=word} #當varname存在且不為空,返回varname值,否則返回word ##同時對var進行賦值操作

${varname:?message} #當varname存在且不為空,返回varname值,否則顯示varname:message

${varname:+word} #當varname存在且不為空,返回word,否則返回null

[root@localhost ~]# NAME=BJTLXY

[root@localhost ~]# echo $NAME

BJTLXY

[root@localhost ~]# echo ${NAME:-no user};echo ${NAME}

BJTLXY

BJTLXY

[root@localhost ~]# echo ${NAME:=dana};echo ${NAME}

BJTLXY

BJTLXY

[root@localhost ~]# echo ${NAMEs:=dana};echo ${NAME}

dana

BJTLXY

[root@localhost ~]# echo ${NAME:?shuo sha lie};echo $NAME

BJTLXY

BJTLXY

[root@localhost ~]# echo ${NAMEs:?shuo sha lie};echo $NAME

dana

BJTLXY

[root@localhost ~]# echo ${NAMES:?shuo sha lie};echo $NAME

-bash: NAMES: shuo sha lie

[root@localhost ~]# echo ${NAMEses:+huanglaoban};echo $NAME

BJTLXY

[root@localhost ~]# echo ${NAME:+huanglaoban};echo $NAME

huanglaoban

BJTLXY

[root@localhost ~]#

#下面六組主要用于需要對變量的值做修改后輸出的場景

${varname#key} #從頭開始刪除關鍵字(key),執行最短匹配

${varname##key} #從頭開始刪除關鍵字,執行最長匹配

${varname%key} #從尾部開始刪除關鍵字,執行最短匹配

${varname% %key} #從尾部開始刪除關鍵字,執行最長匹配

${varname/old/new} #將old替換為new,替換第一個出現的old

${varname//old/new} #將old替換為new,替換所有

[root@localhost ~]# USR=$(head -1 /etc/passwd)

[root@localhost ~]# echo $USR

root:x:0:0:root:/root:/bin/bash

[root@localhost ~]# echo ${USR#*:}

x:0:0:root:/root:/bin/bash

[root@localhost ~]# echo $USR

root:x:0:0:root:/root:/bin/bash

[root@localhost ~]# echo ${USR##*:}

/bin/bash

[root@localhost ~]# echo ${USR%:*}

root:x:0:0:root:/root

[root@localhost ~]# echo ${USR%%:*}

root

[root@localhost ~]# echo ${USR/root/admin}

admin:x:0:0:root:/root:/bin/bash

[root@localhost ~]# echo ${USR//root//admin}

/admin:x:0:0:/admin://admin:/bin/bash

[root@localhost ~]#

數組

一組具有相同數據類型的集合

數據類型:

數值類型:

字符串類型:

bash提供一維數組的變量功能,數組中所有便利那個都會被編錄成索引,數組的索引從0開始

創建數組:

1.name[subscript]=value

2.name=(value1………………valuen) #用空格隔開

3.declare -a 定義一個空數組

獲取數組的值

可以使用echo ${name[subscript]} 通過索引得到數組的值

如果subscript是@或者*,則將調用所有的數組成員

如果使用${#name[subscript]}可以返回${name[subscript]}長度

如果是*或@,則返回數組中元素個數

[root@localhost ~]# A[1]=11

[root@localhost ~]# A[2]=22

[root@localhost ~]# A[3]=33

[root@localhost ~]# echo ${A[0]}

[root@localhost ~]# echo ${A[1]}

11

[root@localhost ~]# echo ${A[-1]}

33

[root@localhost ~]# A[-1]=99

-bash: A[-1]: bad array subscript

[root@localhost ~]# A[6]=66

[root@localhost ~]# echo ${A[*]}

11 22 33 66

[root@localhost ~]# echo ${A[@]}

11 22 33 66

[root@localhost ~]# echo ${#name[*]}

0

[root@localhost ~]# echo ${#name[@]}

0

[root@localhost ~]# echo ${#A[@]}

4

[root@localhost ~]# echo ${#A[1]}

2

[root@localhost ~]# echo ${A[0]},${A[1]},${A[2]},${A[3]}

,11,22,33

[root@localhost ~]# A[0]=00

[root@localhost ~]# echo ${A[0]},${A[1]},${A[2]},${A[3]}

00,11,22,33

[root@localhost ~]#

[root@localhost ~]# B=(aa bb cc)

[root@localhost ~]# echo ${B[0]},${B[1]},${B[2]}

aa,bb,cc

[root@localhost ~]# echo ${B[0]}:${B[1]}:${B[2]}

aa:bb:cc

[root@localhost ~]# echo 'length if B_0 is ${#B[0]}' #請注意此處的錯誤

length if B_0 is ${#B[0]}

[root@localhost ~]# echo 'length of B_0 is' ${#B[0]}

length of B_0 is 2

[root@localhost ~]# echo 'length of B_1 is' ${#B[1]}

length of B_1 is 2

[root@localhost ~]# echo ${#B[*]}

3

[root@localhost ~]#

數值型數組:(一對括號表示,元素之間空格隔開)

arr_num=(1 2 3 4 5 6)

字符型數組:

arr_string=('aa' 'bb' 'cc' 'dd' )

數組常用操作:

獲取數組的長度:

arr_length=${#arr_num[*]}

arr_length=${#arr_string[@]}

列出索引下標:

echo ${!arr_num[@]}

讀取某個下標的值:

arr_index_2=${arr_num[2]}

對某個下標進行賦值

下標存在:相當與修改原有的值

arr_num[2]=100

下標不存在,按照升序走

arr_num[23]=100

刪除操作:

清除某個元素

unset arr_num[1]

清除整個數組:

unset arr_num

數組的切片:

格式:${數組名[@/*]:開始下標:取數數值}

echo ${arr_string[*]:2:3}

數組的遍歷:

for v in ${arr_string[@]};do

echo $v;

done

總結

以上是生活随笔為你收集整理的linux修改某个用户的数组,linux-shell编程1:变量和数组的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。