当前位置: 首页 > news >正文

Linux925 shell 变量:本地、环境变量、全局变量;数组:普通数组、关联数组;交互定义、basename、dirname

问题

[caozx26@caozx26 ~]$ cat 1.sh
read -p ""\$#" is:" $#
echo "ok"
[caozx26@caozx26 ~]$ ./1.sh 213 23 213 2132
./1.sh: 第 1 行:read: `4': 不是有效的标识符
ok
[caozx26@caozx26 ~]$ 

在这里插入图片描述

[caozx26@caozx26 ~]$ ./1.sh sd asd asd 
./1.sh: 第 1 行:read: `3': 不是有效的标识符
ok
[caozx26@caozx26 ~]$ 

在这里插入图片描述

[caozx26@caozx26 ~]$ array[6]=(12 23121 213 123 "hello" [21]=ff)
bash: array[6]: 无法将链表赋值给数组成员

在这里插入图片描述

[caozx26@caozx26 ~]$ names_ar=([name1]=js [n2]=ts [n]=ok)
[caozx26@caozx26 ~]$ echo ${names_ar[*]}
ok
[caozx26@caozx26 ~]$ echo ${names_ar[@]}
ok
[caozx26@caozx26 ~]$ echo ${!names_ar[@]}
0
[caozx26@caozx26 ~]$ 

在这里插入图片描述
全局变量是变量吗 是系统变量吗
在这里插入图片描述
在这里插入图片描述

变量

环境变量、本地变量

[caozx26@caozx26 ~]$ A=hello\
> ^C
[caozx26@caozx26 ~]$ A=hello
[caozx26@caozx26 ~]$ echo $A
hello
[caozx26@caozx26 ~]$ export A
[caozx26@caozx26 ~]$ env|grep ^A
A=hello
[caozx26@caozx26 ~]$ B=22
[caozx26@caozx26 ~]$ psPID TTY          TIME CMD3082 pts/0    00:00:00 bash3162 pts/0    00:00:00 ps
[caozx26@caozx26 ~]$ echo $B
22
[caozx26@caozx26 ~]$ /bin/bash
[caozx26@caozx26 ~]$ echo $B[caozx26@caozx26 ~]$ exit
exit
[caozx26@caozx26 ~]$ echo $B
22
[caozx26@caozx26 ~]$ /bin/bash
[caozx26@caozx26 ~]$ echo $A
hello
[caozx26@caozx26 ~]$ echo $B[caozx26@caozx26 ~]$ exit
exit
[caozx26@caozx26 ~]$ 

全局变量

[caozx26@caozx26 ~]$ cat /etc/profile
# /etc/profile# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.pathmunge () {case ":${PATH}:" in*:"$1":*);;*)if [ "$2" = "after" ] ; thenPATH=$PATH:$1elsePATH=$1:$PATHfiesac
}if [ -x /usr/bin/id ]; thenif [ -z "$EUID" ]; then# ksh workaroundEUID=`/usr/bin/id -u`UID=`/usr/bin/id -ru`fiUSER="`/usr/bin/id -un`"LOGNAME=$USERMAIL="/var/spool/mail/$USER"
fi# Path manipulation
if [ "$EUID" = "0" ]; thenpathmunge /usr/sbinpathmunge /usr/local/sbin
elsepathmunge /usr/local/sbin afterpathmunge /usr/sbin after
fiHOSTNAME=`/usr/bin/hostname 2>/dev/null`
HISTSIZE=1000
if [ "$HISTCONTROL" = "ignorespace" ] ; thenexport HISTCONTROL=ignoreboth
elseexport HISTCONTROL=ignoredups
fiexport PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL# By default, we want umask to get set. This sets it for login shell
# Current threshold for system reserved uid/gids is 200
# You could check uidgid reservation validity in
# /usr/share/doc/setup-*/uidgid file
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; thenumask 002
elseumask 022
fifor i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; doif [ -r "$i" ]; thenif [ "${-#*i}" != "$-" ]; then . "$i"else. "$i" >/dev/nullfifi
doneunset i
unset -f pathmungeif [ -n "${BASH_VERSION-}" ] ; thenif [ -f /etc/bashrc ] ; then# Bash login shells run only /etc/profile# Bash non-login shells run only /etc/bashrc# Check for double sourcing is done in /etc/bashrc.. /etc/bashrcfi
fi
[caozx26@caozx26 ~]$ cat /etc/bashrc
# /etc/bashrc# System wide functions and aliases
# Environment stuff goes in /etc/profile# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.# Prevent doublesourcing
if [ -z "$BASHRCSOURCED" ]; thenBASHRCSOURCED="Y"# are we an interactive shell?if [ "$PS1" ]; thenif [ -z "$PROMPT_COMMAND" ]; thencase $TERM inxterm*|vte*)if [ -e /etc/sysconfig/bash-prompt-xterm ]; thenPROMPT_COMMAND=/etc/sysconfig/bash-prompt-xtermelif [ "${VTE_VERSION:-0}" -ge 3405 ]; thenPROMPT_COMMAND="__vte_prompt_command"elsePROMPT_COMMAND='printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/\~}"'fi;;screen*)if [ -e /etc/sysconfig/bash-prompt-screen ]; thenPROMPT_COMMAND=/etc/sysconfig/bash-prompt-screenelsePROMPT_COMMAND='printf "\033k%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/\~}"'fi;;*)[ -e /etc/sysconfig/bash-prompt-default ] && PROMPT_COMMAND=/etc/sysconfig/bash-prompt-default;;esacfi# Turn on parallel historyshopt -s histappendhistory -a# Turn on checkwinsizeshopt -s checkwinsize[ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "# You might want to have e.g. tty in prompt (e.g. more virtual machines)# and console windows# If you want to do so, just add e.g.# if [ "$PS1" ]; then#   PS1="[\u@\h:\l \W]\\$ "# fi# to your custom modification shell script in /etc/profile.d/ directoryfiif ! shopt -q login_shell ; then # We're not a login shell# Need to redefine pathmunge, it gets undefined at the end of /etc/profilepathmunge () {case ":${PATH}:" in*:"$1":*);;*)if [ "$2" = "after" ] ; thenPATH=$PATH:$1elsePATH=$1:$PATHfiesac}# By default, we want umask to get set. This sets it for non-login shell.# Current threshold for system reserved uid/gids is 200# You could check uidgid reservation validity in# /usr/share/doc/setup-*/uidgid fileif [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; thenumask 002elseumask 022fiSHELL=/bin/bash# Only display echos from profile.d scripts if we are no login shell# and interactive - otherwise just process them to set envvarsfor i in /etc/profile.d/*.sh; doif [ -r "$i" ]; thenif [ "$PS1" ]; then. "$i"else. "$i" >/dev/nullfifidoneunset iunset -f pathmungefifi
# vim:ts=4:sw=4

内置变量

$? $$ !!! !!!

[caozx26@caozx26 ~]$ /bin/bash
[caozx26@caozx26 ~]$ ls
公共  模板  视频  图片  文档  下载  音乐  桌面
[caozx26@caozx26 ~]$ echo $?
0
[caozx26@caozx26 ~]$ $$
bash: 3518: 未找到命令...
[caozx26@caozx26 ~]$ echo $$
3518
[caozx26@caozx26 ~]$ psPID TTY          TIME CMD3478 pts/0    00:00:00 bash3518 pts/0    00:00:00 bash3586 pts/0    00:00:00 ps
[caozx26@caozx26 ~]$ kill -9 $$
已杀死
[caozx26@caozx26 ~]$ $!
[caozx26@caozx26 ~]$ sleep 200&
[1] 3615
[caozx26@caozx26 ~]$ echo $!
3615
[caozx26@caozx26 ~]$ psPID TTY          TIME CMD3478 pts/0    00:00:00 bash3615 pts/0    00:00:00 sleep3628 pts/0    00:00:00 ps
[caozx26@caozx26 ~]$ ls -l
总用量 0
drwxr-xr-x. 2 caozx26 caozx26 6 926 05:33 公共
drwxr-xr-x. 2 caozx26 caozx26 6 926 05:33 模板
drwxr-xr-x. 2 caozx26 caozx26 6 926 05:33 视频
drwxr-xr-x. 2 caozx26 caozx26 6 926 05:33 图片
drwxr-xr-x. 2 caozx26 caozx26 6 926 05:33 文档
drwxr-xr-x. 2 caozx26 caozx26 6 926 05:33 下载
drwxr-xr-x. 2 caozx26 caozx26 6 926 05:33 音乐
drwxr-xr-x. 2 caozx26 caozx26 6 926 05:33 桌面
[caozx26@caozx26 ~]$ echo !$
echo -l
-l
[caozx26@caozx26 ~]$ !!
echo -l
-l
[caozx26@caozx26 ~]$ vim 1.sh
[caozx26@caozx26 ~]$ cat 1.sh
read -p ""$# is:"" $#
echo "ok"
[caozx26@caozx26 ~]$ chmod +x 1.sh

$* $@ $#

[caozx26@caozx26 ~]$ ./1.sh asd sad dd das sadd as
6
asd sad dd das sadd as
asd sad dd das sadd as
ok
[caozx26@caozx26 ~]$ 

$0 $1 $2 $3

[caozx26@caozx26 ~]$ chmod +x 2.sh
[caozx26@caozx26 ~]$ ./2.sh sad dsad sda dasd
./2.sh
sad
dsad
sda
[caozx26@caozx26 ~]$ 

定义规则

[caozx26@caozx26 ~]$ ?a=s
bash: ?a=s: 未找到命令...
[caozx26@caozx26 ~]$ "?a"=s
bash: ?a=s: 未找到命令...
[caozx26@caozx26 ~]$ "213a"=dsa
bash: 213a=dsa: 未找到命令...
[caozx26@caozx26 ~]$ D=" abc"
[caozx26@caozx26 ~]$ D= AS
bash: AS: 未找到命令...
相似命令是: 'as'
[caozx26@caozx26 ~]$ DA= SD
bash: SD: 未找到命令...
[caozx26@caozx26 ~]$ DA=" SDD"
[caozx26@caozx26 ~]$ DA="?SA"
[caozx26@caozx26 ~]$ DA=?21
[caozx26@caozx26 ~]$ 
[caozx26@caozx26 ~]$ "123"=A
bash: 123=A: 未找到命令...
[caozx26@caozx26 ~]$ A=date
[caozx26@caozx26 ~]$ a=date
[caozx26@caozx26 ~]$ a=`date`
[caozx26@caozx26 ~]$ echo $a
2025年 09月 26日 星期五 06:31:53 CST
[caozx26@caozx26 ~]$ a=date
[caozx26@caozx26 ~]$ echo $a
date
[caozx26@caozx26 ~]$ a=$(date)
[caozx26@caozx26 ~]$ echo $a
2025年 09月 26日 星期五 06:32:09 CST
[caozx26@caozx26 ~]$ 

交互式定义

[caozx26@caozx26 ~]$ read -t 3 -p "input " name
input 213123[caozx26@caozx26 ~]$ echo $name[caozx26@caozx26 ~]$ read -t -p "input:" name
bash: read: -p: 无效的超时声明
[caozx26@caozx26 ~]$ read -t 3 -p "input:" name
input:12321312
[caozx26@caozx26 ~]$ echo $name
12321312
[caozx26@caozx26 ~]$ echo -s -p "input:" pass
-s -p input: pass
[caozx26@caozx26 ~]$ echo -s -p "input:"  pass
-s -p input: pass
[caozx26@caozx26 ~]$ read -s -p "input:" pass
input:[caozx26@caozx26 ~]$ echo $pass
213
[caozx26@caozx26 ~]$ echo hell | A
bash: A: 未找到命令...
[caozx26@caozx26 ~]$ echo hell | read A
[caozx26@caozx26 ~]$ echo $a
2025年 09月 26日 星期五 06:32:09 CST
[caozx26@caozx26 ~]$ echo $A
date
[caozx26@caozx26 ~]$ read A B
hello sss
[caozx26@caozx26 ~]$ echo $A
hello
[caozx26@caozx26 ~]$ echo $B
sss
[caozx26@caozx26 ~]$ vim 1.txt
[caozx26@caozx26 ~]$ cat 1.txt
ss 123[caozx26@caozx26 ~]$ read user pass <1.txt
[caozx26@caozx26 ~]$ echo $user 
ss
[caozx26@caozx26 ~]$ echo $pass
123
[caozx26@caozx26 ~]$ vim 2.txt
[caozx26@caozx26 ~]$ read us pass<2.txt
[caozx26@caozx26 ~]$ echo $us
dasd,123
[caozx26@caozx26 ~]$ echo $pass[caozx26@caozx26 ~]$ 

dirname basename

[caozx26@caozx26 ~]$ pwd
/home/caozx26
[caozx26@caozx26 ~]$ ls
1.sh  1.txt  2.sh  2.txt  公共  模板  视频  图片  文档  下载  音乐  桌面
[caozx26@caozx26 ~]$ c=/home/caozx26/1.sh
[caozx26@caozx26 ~]$ direname $c
bash: direname: 未找到命令...
[caozx26@caozx26 ~]$ dirname $c
/home/caozx26
[caozx26@caozx26 ~]$ basename $c
1.sh
[caozx26@caozx26 ~]$ 

数组

普通数组

一次赋值1个变量

[caozx26@caozx26 ~]$ array[0]=sa
[caozx26@caozx26 ~]$ array[1]=sd
[caozx26@caozx26 ~]$ echo $[array[*]]
bash: array[*]: 数组下标不正确
0
[caozx26@caozx26 ~]$ echo ${array[*]}
sa sd
[caozx26@caozx26 ~]$ echo ${array[1]}
sd

一次赋值多个变量

[caozx26@caozx26 ~]$ array1=(na,ma,da)
[caozx26@caozx26 ~]$ echo ${array1[0]}
na,ma,da
[caozx26@caozx26 ~]$ declare -r
declare -r BASHOPTS="checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:progcomp:promptvars:sourcepath"
declare -ir BASHPID
declare -ar BASH_VERSINFO=([0]="4" [1]="4" [2]="19" [3]="1" [4]="release" [5]="x86_64-redhat-linux-gnu")
declare -ir EUID="1000"
declare -ir PPID="3473"
declare -r SHELLOPTS="braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor"
declare -ir UID="1000"
[caozx26@caozx26 ~]$ echo ${array[*]:1:1}
sd
[caozx26@caozx26 ~]$ echo ${array1[*]:1:1}[caozx26@caozx26 ~]$ echo ${array1[*]:0:1}
na,ma,da
[caozx26@caozx26 ~]$ array2=(ss ssa sdsad asd)
[caozx26@caozx26 ~]$ echo ${array2[*]:2:1}
sdsad
[caozx26@caozx26 ~]$ echo ${!array2[*]}
0 1 2 3
[caozx26@caozx26 ~]$ echo ${#array2[*]}
4
[caozx26@caozx26 ~]$ array4=(`ls -l`)
[caozx26@caozx26 ~]$ echo array4
array4
[caozx26@caozx26 ~]$ echo $array4
总用量
[caozx26@caozx26 ~]$ ls -l
总用量 8
-rwxrwxr-x. 1 caozx26 caozx26 34 926 06:24 1.sh
-rwxrwxr-x. 1 caozx26 caozx26 32 926 06:28 2.sh
drwxr-xr-x. 2 caozx26 caozx26  6 926 05:33 公共
drwxr-xr-x. 2 caozx26 caozx26  6 926 05:33 模板
drwxr-xr-x. 2 caozx26 caozx26  6 926 05:33 视频
drwxr-xr-x. 2 caozx26 caozx26  6 926 05:33 图片
drwxr-xr-x. 2 caozx26 caozx26  6 926 05:33 文档
drwxr-xr-x. 2 caozx26 caozx26  6 926 05:33 下载
drwxr-xr-x. 2 caozx26 caozx26  6 926 05:33 音乐
drwxr-xr-x. 2 caozx26 caozx26  6 926 05:33 桌面
[caozx26@caozx26 ~]$ echo ${array4[@]}
总用量 8 -rwxrwxr-x. 1 caozx26 caozx26 34 926 06:24 1.sh -rwxrwxr-x. 1 caozx26 caozx26 32 926 06:28 2.sh drwxr-xr-x. 2 caozx26 caozx26 6 926 05:33 公共 drwxr-xr-x. 2 caozx26 caozx26 6 926 05:33 模板 drwxr-xr-x. 2 caozx26 caozx26 6 926 05:33 视频 drwxr-xr-x. 2 caozx26 caozx26 6 926 05:33 图片 drwxr-xr-x. 2 caozx26 caozx26 6 926 05:33 文档 drwxr-xr-x. 2 caozx26 caozx26 6 926 05:33 下载 drwxr-xr-x. 2 caozx26 caozx26 6 926 05:33 音乐 drwxr-xr-x. 2 caozx26 caozx26 6 926 05:33 桌面
[caozx26@caozx26 ~]$ echo ${array4[1]}
8
[caozx26@caozx26 ~]$ array[6]=(12 23121 213 123 "hello" [21]=ff)
bash: array[6]: 无法将链表赋值给数组成员
[caozx26@caozx26 ~]$ array6=(12 23121 213 123 "hello" [21]=ff)
[caozx26@caozx26 ~]$ echo $array6
12
[caozx26@caozx26 ~]$ echo ${array6[@]}
12 23121 213 123 hello ff
[caozx26@caozx26 ~]$ 

关联数组

一次赋单个值

[caozx26@caozx26 ~]$ declare -A a_array
[caozx26@caozx26 ~]$ declare -A books_array
[caozx26@caozx26 ~]$ declare -A books_ar
[caozx26@caozx26 ~]$ boos_ar[linux]=2
[caozx26@caozx26 ~]$ books_ar[linux]=2
[caozx26@caozx26 ~]$ books_ar[math]=3
[caozx26@caozx26 ~]$ echo ${books_ar[*]}
3 2
[caozx26@caozx26 ~]$ echo ${books_ar[*]}
3 2
[caozx26@caozx26 ~]$ echo ${books_ar[linux]}
2
[caozx26@caozx26 ~]$ echo ${#books_ar[*]}
2
[caozx26@caozx26 ~]$ echo ${!books_ar[*]}
math linux
[caozx26@caozx26 ~]$ 

一次赋多个值

[caozx26@caozx26 ~]$ names_ar=([name1]=js [n2]=ts [n]=ok)
[caozx26@caozx26 ~]$ echo ${names_ar[*]}
ok
[caozx26@caozx26 ~]$ echo ${names_ar[@]}
ok
[caozx26@caozx26 ~]$ echo ${!names_ar[@]}
0
[caozx26@caozx26 ~]$ declare -A names
[caozx26@caozx26 ~]$ names=([na1]=ts [n2]=js [n3]=oko)
[caozx26@caozx26 ~]$ echo ${names[@]}
js oko ts
[caozx26@caozx26 ~]$ echo ${!names[@]}
n2 n3 na1
[caozx26@caozx26 ~]$ echo ${#names[@]}
3
[caozx26@caozx26 ~]$ 

记录在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

[caozx26@caozx26 ~]$ /bin/bash
[caozx26@caozx26 ~]$ ls
公共  模板  视频  图片  文档  下载  音乐  桌面
[caozx26@caozx26 ~]$ echo $?
0
[caozx26@caozx26 ~]$ $$
bash: 3518: 未找到命令...
[caozx26@caozx26 ~]$ echo $$
3518
[caozx26@caozx26 ~]$ psPID TTY          TIME CMD3478 pts/0    00:00:00 bash3518 pts/0    00:00:00 bash3586 pts/0    00:00:00 ps
[caozx26@caozx26 ~]$ kill -9 $$
已杀死
[caozx26@caozx26 ~]$ $!
[caozx26@caozx26 ~]$ sleep 200&
[1] 3615
[caozx26@caozx26 ~]$ echo $!
3615
[caozx26@caozx26 ~]$ psPID TTY          TIME CMD3478 pts/0    00:00:00 bash3615 pts/0    00:00:00 sleep3628 pts/0    00:00:00 ps
[caozx26@caozx26 ~]$ ls -l
总用量 0
drwxr-xr-x. 2 caozx26 caozx26 6 926 05:33 公共
drwxr-xr-x. 2 caozx26 caozx26 6 926 05:33 模板
drwxr-xr-x. 2 caozx26 caozx26 6 926 05:33 视频
drwxr-xr-x. 2 caozx26 caozx26 6 926 05:33 图片
drwxr-xr-x. 2 caozx26 caozx26 6 926 05:33 文档
drwxr-xr-x. 2 caozx26 caozx26 6 926 05:33 下载
drwxr-xr-x. 2 caozx26 caozx26 6 926 05:33 音乐
drwxr-xr-x. 2 caozx26 caozx26 6 926 05:33 桌面
[caozx26@caozx26 ~]$ echo !$
echo -l
-l
[caozx26@caozx26 ~]$ !!
echo -l
-l
[caozx26@caozx26 ~]$ vim 1.sh
[caozx26@caozx26 ~]$ cat 1.sh
read -p ""$# is:"" $#
echo "ok"
[caozx26@caozx26 ~]$ chmod +x 1.sh
[caozx26@caozx26 ~]$ ./1.sh 2 12  2
./1.sh: 第 1 行:read: `is:': 不是有效的标识符
ok
[caozx26@caozx26 ~]$ vim 1.sh
[caozx26@caozx26 ~]$ cat 1.sh
read -p ""$#" is:" $#
echo "ok"
[caozx26@caozx26 ~]$ ./1.sh 21 21 21 
./1.sh: 第 1 行:read: `3': 不是有效的标识符
ok
[1]+  已完成               sleep 200
[caozx26@caozx26 ~]$ echo $*[caozx26@caozx26 ~]$ $@
[caozx26@caozx26 ~]$ echo $@[caozx26@caozx26 ~]$ ./1.sh 213 23 32 213
./1.sh: 第 1 行:read: `4': 不是有效的标识符
ok
[caozx26@caozx26 ~]$ vim 1.sh
[caozx26@caozx26 ~]$ cat 1.sh
read -p ""\$#" is:" $#
echo "ok"
[caozx26@caozx26 ~]$ ./1.sh
./1.sh: 第 1 行:read: `0': 不是有效的标识符
ok
[caozx26@caozx26 ~]$ vim 1.sh
[caozx26@caozx26 ~]$ cat  1.sh
read -p ""\$#" is:" $#
echo "ok"
[caozx26@caozx26 ~]$ ./1.sh 231 2312 23 
./1.sh: 第 1 行:read: `3': 不是有效的标识符
ok
[caozx26@caozx26 ~]$ ./1.sh 213 213 213
./1.sh: 第 1 行:read: `3': 不是有效的标识符
ok
[caozx26@caozx26 ~]$ echo $*[caozx26@caozx26 ~]$ cat 1.sh
read -p ""\$#" is:" $#
echo "ok"
[caozx26@caozx26 ~]$ ./1.sh 213 23 213 2132
./1.sh: 第 1 行:read: `4': 不是有效的标识符
ok
[caozx26@caozx26 ~]$ ./1.sh s da dsa 
./1.sh: 第 1 行:read: `3': 不是有效的标识符
ok
[caozx26@caozx26 ~]$ vim 1.sh
[caozx26@caozx26 ~]$ cat 1.sh
read -p "\$# is:" $#
echo "ok"
[caozx26@caozx26 ~]$ ./1.sh sd asd asd 
./1.sh: 第 1 行:read: `3': 不是有效的标识符
ok
[caozx26@caozx26 ~]$ vim 1.sh
[caozx26@caozx26 ~]$ cat 1.sh
read -p "$# is:" input
echo "ok"
[caozx26@caozx26 ~]$ ./1.sh
0 is:we
ok
[caozx26@caozx26 ~]$ ./1.sh 213 213 213
3 is:^C[caozx26@caozx26 ~]$ vim 1.sh
[caozx26@caozx26 ~]$ cat 1.sh
echo $#
echo $*
echo $@
echo "ok"
[caozx26@caozx26 ~]$ ./1.sh asd sad f sssda d
5
asd sad f sssda d
asd sad f sssda d
ok
[caozx26@caozx26 ~]$ ./1.sh asd sad dd das sadd as
6
asd sad dd das sadd as
asd sad dd das sadd as
ok
[caozx26@caozx26 ~]$ vim 2.sh
[caozx26@caozx26 ~]$ cat 2.sh 
echo $0
echo $1
echo $2
echo $3
[caozx26@caozx26 ~]$ chmod +x 2.sh
[caozx26@caozx26 ~]$ ./2.sh sad dsad sda dasd
./2.sh
sad
dsad
sda
[caozx26@caozx26 ~]$ ?a=s
bash: ?a=s: 未找到命令...
[caozx26@caozx26 ~]$ "?a"=s
bash: ?a=s: 未找到命令...
[caozx26@caozx26 ~]$ "213a"=dsa
bash: 213a=dsa: 未找到命令...
[caozx26@caozx26 ~]$ D=" abc"
[caozx26@caozx26 ~]$ D= AS
bash: AS: 未找到命令...
相似命令是: 'as'
[caozx26@caozx26 ~]$ DA= SD
bash: SD: 未找到命令...
[caozx26@caozx26 ~]$ DA=" SDD"
[caozx26@caozx26 ~]$ DA="?SA"
[caozx26@caozx26 ~]$ DA=?21
[caozx26@caozx26 ~]$ "123"=A
bash: 123=A: 未找到命令...
[caozx26@caozx26 ~]$ A=date
[caozx26@caozx26 ~]$ a=date
[caozx26@caozx26 ~]$ a=`date`
[caozx26@caozx26 ~]$ echo $a
2025年 09月 26日 星期五 06:31:53 CST
[caozx26@caozx26 ~]$ a=date
[caozx26@caozx26 ~]$ echo $a
date
[caozx26@caozx26 ~]$ a=$(date)
[caozx26@caozx26 ~]$ echo $a
2025年 09月 26日 星期五 06:32:09 CST
[caozx26@caozx26 ~]$ array[0]=sa
[caozx26@caozx26 ~]$ array[1]=sd
[caozx26@caozx26 ~]$ echo $[array[*]]
bash: array[*]: 数组下标不正确
0
[caozx26@caozx26 ~]$ echo ${array[*]}
sa sd
[caozx26@caozx26 ~]$ echo ${array[1]}
sd
[caozx26@caozx26 ~]$ array1=(na,ma,da)
[caozx26@caozx26 ~]$ echo ${array1[0]}
na,ma,da
[caozx26@caozx26 ~]$ declare -r
declare -r BASHOPTS="checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:progcomp:promptvars:sourcepath"
declare -ir BASHPID
declare -ar BASH_VERSINFO=([0]="4" [1]="4" [2]="19" [3]="1" [4]="release" [5]="x86_64-redhat-linux-gnu")
declare -ir EUID="1000"
declare -ir PPID="3473"
declare -r SHELLOPTS="braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor"
declare -ir UID="1000"
[caozx26@caozx26 ~]$ echo ${array[*]:1:1}
sd
[caozx26@caozx26 ~]$ echo ${array1[*]:1:1}[caozx26@caozx26 ~]$ echo ${array1[*]:0:1}
na,ma,da
[caozx26@caozx26 ~]$ array2=(ss ssa sdsad asd)
[caozx26@caozx26 ~]$ echo ${array2[*]:2:1}
sdsad
[caozx26@caozx26 ~]$ echo ${!array2[*]}
0 1 2 3
[caozx26@caozx26 ~]$ echo ${#array2[*]}
4
[caozx26@caozx26 ~]$ array4=(`ls -l`)
[caozx26@caozx26 ~]$ echo array4
array4
[caozx26@caozx26 ~]$ echo $array4
总用量
[caozx26@caozx26 ~]$ ls -l
总用量 8
-rwxrwxr-x. 1 caozx26 caozx26 34 926 06:24 1.sh
-rwxrwxr-x. 1 caozx26 caozx26 32 926 06:28 2.sh
drwxr-xr-x. 2 caozx26 caozx26  6 926 05:33 公共
drwxr-xr-x. 2 caozx26 caozx26  6 926 05:33 模板
drwxr-xr-x. 2 caozx26 caozx26  6 926 05:33 视频
drwxr-xr-x. 2 caozx26 caozx26  6 926 05:33 图片
drwxr-xr-x. 2 caozx26 caozx26  6 926 05:33 文档
drwxr-xr-x. 2 caozx26 caozx26  6 926 05:33 下载
drwxr-xr-x. 2 caozx26 caozx26  6 926 05:33 音乐
drwxr-xr-x. 2 caozx26 caozx26  6 926 05:33 桌面
[caozx26@caozx26 ~]$ echo ${array4[@]}
总用量 8 -rwxrwxr-x. 1 caozx26 caozx26 34 926 06:24 1.sh -rwxrwxr-x. 1 caozx26 caozx26 32 926 06:28 2.sh drwxr-xr-x. 2 caozx26 caozx26 6 926 05:33 公共 drwxr-xr-x. 2 caozx26 caozx26 6 926 05:33 模板 drwxr-xr-x. 2 caozx26 caozx26 6 926 05:33 视频 drwxr-xr-x. 2 caozx26 caozx26 6 926 05:33 图片 drwxr-xr-x. 2 caozx26 caozx26 6 926 05:33 文档 drwxr-xr-x. 2 caozx26 caozx26 6 926 05:33 下载 drwxr-xr-x. 2 caozx26 caozx26 6 926 05:33 音乐 drwxr-xr-x. 2 caozx26 caozx26 6 926 05:33 桌面
[caozx26@caozx26 ~]$ echo ${array4[1]}
8
[caozx26@caozx26 ~]$ array[6]=(12 23121 213 123 "hello" [21]=ff)
bash: array[6]: 无法将链表赋值给数组成员
[caozx26@caozx26 ~]$ array6=(12 23121 213 123 "hello" [21]=ff)
[caozx26@caozx26 ~]$ echo $array6
12
[caozx26@caozx26 ~]$ echo ${array6[@]}
12 23121 213 123 hello ff
[caozx26@caozx26 ~]$ declare -A a_array
[caozx26@caozx26 ~]$ declare -A books_array
[caozx26@caozx26 ~]$ declare -A books_ar
[caozx26@caozx26 ~]$ boos_ar[linux]=2
[caozx26@caozx26 ~]$ books_ar[linux]=2
[caozx26@caozx26 ~]$ books_ar[math]=3
[caozx26@caozx26 ~]$ echo ${books_ar[*]}
3 2
[caozx26@caozx26 ~]$ echo ${books_ar[*]}
3 2
[caozx26@caozx26 ~]$ echo ${books_ar[linux]}
2
[caozx26@caozx26 ~]$ echo ${#books_ar[*]}
2
[caozx26@caozx26 ~]$ echo ${!books_ar[*]}
math linux
[caozx26@caozx26 ~]$ names_ar=([name1]=js [n2]=ts [n]=ok)
[caozx26@caozx26 ~]$ echo ${names_ar[*]}
ok
[caozx26@caozx26 ~]$ echo ${names_ar[@]}
ok
[caozx26@caozx26 ~]$ echo ${!names_ar[@]}
0
[caozx26@caozx26 ~]$ declare -A names
[caozx26@caozx26 ~]$ names=([na1]=ts [n2]=js [n3]=oko)
[caozx26@caozx26 ~]$ echo ${names[@]}
js oko ts
[caozx26@caozx26 ~]$ echo ${!names[@]}
n2 n3 na1
[caozx26@caozx26 ~]$ echo ${#names[@]}
3
[caozx26@caozx26 ~]$ read -t 3 -p "input " name
input 213123[caozx26@caozx26 ~]$ echo $name[caozx26@caozx26 ~]$ read -t -p "input:" name
bash: read: -p: 无效的超时声明
[caozx26@caozx26 ~]$ read -t 3 -p "input:" name
input:12321312
[caozx26@caozx26 ~]$ echo $name
12321312
[caozx26@caozx26 ~]$ echo -s -p "input:" pass
-s -p input: pass
[caozx26@caozx26 ~]$ echo -s -p "input:"  pass
-s -p input: pass
[caozx26@caozx26 ~]$ read -s -p "input:" pass
input:[caozx26@caozx26 ~]$ echo $pass
213
[caozx26@caozx26 ~]$ echo hell | A
bash: A: 未找到命令...
[caozx26@caozx26 ~]$ echo hell | read A
[caozx26@caozx26 ~]$ echo $a
2025年 09月 26日 星期五 06:32:09 CST
[caozx26@caozx26 ~]$ echo $A
date
[caozx26@caozx26 ~]$ read A B
hello sss
[caozx26@caozx26 ~]$ echo $A
hello
[caozx26@caozx26 ~]$ echo $B
sss
[caozx26@caozx26 ~]$ vim 1.txt
[caozx26@caozx26 ~]$ cat 1.txt
ss 123[caozx26@caozx26 ~]$ read user pass <1.txt
[caozx26@caozx26 ~]$ echo $user 
ss
[caozx26@caozx26 ~]$ echo $pass
123
[caozx26@caozx26 ~]$ vim 2.txt
[caozx26@caozx26 ~]$ read us pass<2.txt
[caozx26@caozx26 ~]$ echo $us
dasd,123
[caozx26@caozx26 ~]$ echo $pass[caozx26@caozx26 ~]$ pwd
/home/caozx26
[caozx26@caozx26 ~]$ ls
1.sh  1.txt  2.sh  2.txt  公共  模板  视频  图片  文档  下载  音乐  桌面
[caozx26@caozx26 ~]$ c=/home/caozx26/1.sh
[caozx26@caozx26 ~]$ direname $c
bash: direname: 未找到命令...
[caozx26@caozx26 ~]$ dirname $c
/home/caozx26
[caozx26@caozx26 ~]$ basename $c
1.sh
[caozx26@caozx26 ~]$ 
http://www.dtcms.com/a/406133.html

相关文章:

  • 低价网站备案海报设计制作平台
  • 解读2025 《可信数据空间 技术能力评价规范》
  • 【51单片机篮球记分器+复合按键操作】2022-12-22
  • 网站域名属于哪里管网站 类库
  • 【超分辨率专题】DLoRAL:视频超分辨率的新范式,细节与时序一致的双重提升
  • VS2022 C++调试完全指南
  • 【JAVA】从入门到放弃-01-HelloWorld
  • 玳瑁的嵌入式日记---0925(ARM--时钟)
  • 《代码的“言外之意”:从词源学透彻理解编程》字符的“双重生活”:从Escape到Raw
  • 【Spark+Hive+hadoop】人类健康生活方式数据分析
  • K8S部署的rook-ceph下线osd流程
  • 建站历史查询如何做网站推广页面
  • maven使用非明文密码配置
  • 做网站后期维护工资贴吧wordpress ad widget
  • Reactor 模式:高并发网络编程的事件驱动利器
  • 无人机数传模块技术要点概述
  • Telegram机器人Token和ChatID获取教程
  • Deepoc具身智能模型:为传统电厂巡检机器人注入“灵魂”与“智慧”
  • 中医智慧+AI科技,七彩喜机器人让健康养护“智”在必得
  • Ubuntu 中 Bash / Zsh / Ash / Dash 的使用与区别(含对比图)
  • leetcode 814 二叉树剪枝
  • 【Redis】热Key/大Key问题、缓存击穿、缓存穿透、缓存雪崩、缓存与数据库一致性问题
  • 大模型剪枝系列——基于权重大小剪枝
  • 制作网站的模板深圳网站改版公司
  • 【Linux基础知识系列:第一百四十篇】理解SELinux与系统安全
  • dbswitch:一款免费开源、功能强大的异构数据库迁移同步工具
  • python+uniapp基于微信小程序美食点餐系统
  • Go语言100个实战案例-进阶与部署篇:使用Go打包生成可执行文件
  • 【Golang】--- 函数深度解析
  • 后端进阶-性能优化