Jadual Kandungan
1. Kenapa dipanggil Shell? " > 1. Kenapa dipanggil Shell?
2. Apakah hubungan antara Shell prompt (PS1) dan Carriage Return (CR)? " >2. Apakah hubungan antara Shell prompt (PS1) dan Carriage Return (CR)?
5、var=value? export 前后差在哪?" >5、var=value? export 前后差在哪?
6、exec 跟 source 差在哪?" >6、exec 跟 source 差在哪?
7、( ) 与 { } 差在哪?" >7、( ) 与 { } 差在哪?
8、$(()) 与 $() 还有 ${} 差在哪?" >8、$(()) 与 $() 还有 ${} 差在哪?
9、$@ 与 $* 区别在哪?" >9、$@ 与 $* 区别在哪?
10 Apakah perbezaan antara && dan ||? " >10 Apakah perbezaan antara && dan ||?
11、> 与 < 差在哪?" >11、> 与 < 差在哪?
12、你要if还是case呢?" >12、你要if还是case呢?
13、for what? while与until差在哪?" >13、for what? while与until差在哪?
Rumah Operasi dan penyelenggaraan operasi dan penyelenggaraan linux Tiga Belas Soalan Klasik Mengenai Skrip Shell

Tiga Belas Soalan Klasik Mengenai Skrip Shell

Aug 03, 2023 pm 03:03 PM
shell skrip shell


Tiga Belas Soalan Klasik Mengenai Skrip Shell

1. Kenapa dipanggil Shell?

Kami tahu bahawa operasi komputer tidak dapat dipisahkan daripada perkakasan, tetapi ia tidak boleh mengendalikan perkakasan secara langsung Pemacu perkakasan hanya boleh dikawal oleh perisian yang dipanggil "OS (Sistem Operasi)." Sistem pengendalian (OS).

Pengguna tidak boleh mengendalikan Kernel secara langsung, tetapi berkomunikasi dengan Kernel melalui program "shell" Kernel, yang dipanggil Shell ialah antara muka antara pengguna dan sistem. sistem hanya boleh digunakan untuk menyelesaikan kerja melalui baris arahan Oleh itu, definisi Shell yang paling mudah ialah: Jurubahasa Perintah (Command Interpreter)

  • Menterjemah arahan pengguna kepada kernel untuk diproses

  • Pada masa yang sama, hasil pemprosesan kernel diterjemahkan kepada pengguna

OS yang berbeza menggunakan Kernel yang berbeza juga boleh digunakan pada kernel yang sama termasuk sh, bash, dan csh 🎜

2. Apakah hubungan antara Shell prompt (PS1) dan Carriage Return (CR)?

Selepas berjaya log masuk ke terminal Shell, bahagian di sebelah kiri kursor dipanggil Prompt gesaan, yang biasanya digunakan oleh pengguna biasa $,管理员用户使用#

  • Shell Prompt: Anda boleh memasukkan arahan , CR (Carriage Return) dibaca sehingga arahan dimasukkan aksara

  • Carriage Return: Perintah boleh dilaksanakan

Jika anda melihat pada butiran teknikal, Shell akan dekomposisi. dimasukkan pada baris Perintah ke dalam "medan" berdasarkan IFS (Pemisah Medan Dalaman) "(perkataan/medan). Kemudian aksara khas (meta) diproses terlebih dahulu, dan akhirnya keseluruhan baris arahan disusun semula. .. font- size="16" mp-original-line-height="25" style="margin-right: 2px;margin-left: 2px;padding: 2px 4px;outline: 0px;line-height: 25px;border- jejari: 4px;warna: rgb(233, 105, 0);warna latar: rgb(248, 248, 248);">'' (petikan tunggal), tutup semua rujukan


petikan lembut: "" (petikan berganda) , reserved $Quote

5 var=value Apa bezanya?

    Takrifan boleh ubah: name=value, pemisah tidak boleh digunakan di sebelah kiri dan kanan tanda sama.
  • ''(单引号),关闭所有引用

  • soft quote:""(双引号),保留$引用

5、var=value? export 前后差在哪?

  • 变量定义:name=value,等号左右两边不能使用分隔符。

  • 变量替换:echo ${name}Penggantian pembolehubah: echo ${name }

  • export变量:export name=value,使变量成为环境变量

# 本地变量
A=B
# 取消变量
unset A
# 环境变量export A=B
Salin selepas log masuk

6、exec 跟 source 差在哪?

环境变量只能从父进程到子进程单向传递。换句话说:在子进程中环境如何变更,均不会影响父进程的环境。
当我们执行一个shell script时,其实是先产生一个sub-shell的子进程, 然后sub-shell再去产生命令行的子进程。关注Linux中文社区

# 创建子shell执行脚本
./1.sh
# 当前shell执行
source 1.sh
# 当前shell执行后退出
exec 1.sh
Salin selepas log masuk

7、( ) 与 { } 差在哪?

( )将 command group 置于 sub-shell 执行
{ }则是在同一个shell内完成

8、$(()) 与 $() 还有 ${} 差在哪?

# 假设我们定义了一个变量为:
file=/dir1/dir2/dir3/my.file.txt
# 我们可以用 ${ } 分别替换获得不同的值:

# 1. shell字符串的非贪婪(最小匹配)左删除
${file#*/} # 拿掉第一条 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt
# 2. shell字符串的贪婪(最大匹配)左删除
${file##*/} # 拿掉最后一条 / 及其左边的字符串:my.file.txt
${file##*.} # 拿掉最后一个 . 及其左边的字符串:txt
# 3. shell字符串的非贪婪(最小匹配)右删除:
${file%/*} # 拿掉最后条 / 及其右边的字符串:/dir1/dir2/dir3
${file%.*} # 拿掉最后一个 . 及其右边的字符串:/dir1/dir2/dir3/my.file
# 4. shell字符串的贪婪(最大匹配)右删除:
${file%%/*} # 拿掉第一条 / 及其右边的字符串:(空值)
${file%%.*} # 拿掉第一个 . 及其右边的字符串:/dir1/dir2/dir3/my

记忆的方法为:
# 是去掉左边(在键盘上 # 在 $ 之左边)
% 是去掉右边(在键盘上 % 在 $ 之右边)
单一符号是最小匹配﹔两个符号是最大匹配。
Salin selepas log masuk

# 5. shell字符串取子串:
${file:0:5}:提取最左边的 5 个字节:/dir1
${file:5:5}:提取第 5 个字节右边的连续 5 个字节:/dir2

# 6. shell字符串变量值的替换:
${file/dir/path}:将第一个 dir 提换为 path:/path1/dir2/dir3/my.file.txt
${file//dir/path}:将全部 dir 提换为 path:/path1/path2/path3/my.file.txt

# 7. ${}还可针对变量的不同状态(没设定、空值、非空值)进行赋值:
${file-my.file.txt} :假如 $file 没有设定,则使用 my.file.txt 作传回值。(空值及非空值时不作处理) 
${file:-my.file.txt} :假如 $file 没有设定或为空值,则使用 my.file.txt 作传回值。(非空值时不作处理)
${file+my.file.txt} :假如 $file 设为空值或非空值,均使用 my.file.txt 作传回值。(没设定时不作处理)
${file:+my.file.txt} :若 $file 为非空值,则使用 my.file.txt 作传回值。(没设定及空值时不作处理)
${file=my.file.txt} :若 $file 没设定,则使用 my.file.txt 作传回值,同时将 $file 赋值为 my.file.txt 。(空值及非空值时不作处理)
${file:=my.file.txt} :若 $file 没设定或为空值,则使用 my.file.txt 作传回值,同时将 $file 赋值为 my.file.txt 。(非空值时不作处理)
${file?my.file.txt} :若 $file 没设定,则将 my.file.txt 输出至 STDERR。(空值及非空值时不作处理)
${file:?my.file.txt} :若 $file 没设定或为空值,则将 my.file.txt 输出至 STDERR。(非空值时不作处理)

tips:
以上的理解在于, 你一定要分清楚 unset 与 null 及 non-null 这三种赋值状态.
一般而言, : 与 null 有关, 若不带 : 的话, null 不受影响, 若带 : 则连 null 也受影响.
Salin selepas log masuk

# 8. 计算shell字符串变量的长度:${#var}
${#var} 可计算出变量值的长度:
${#file} 可得到 27 ,因为 /dir1/dir2/dir3/my.file.txt 刚好是 27 个字节...

# 9. bash数组(array)的处理方法
数组:
A=(a b c d)
引用数组:
${A[@]}
${A[*]}
访问数组成员
${A[0]}
计算数组长度
${#A[@]}
${#A[*]}
数组重新赋值
A[2]=xyz

# 10.$(( ))是用来做整数运算的 
a=5;b=7;c=2;
echo $(( a + b * c))
Salin selepas log masuk

9、$@ 与 $* 区别在哪?

  • "$@"则可得到 “p1” “p2 p3” “p4” 这三个不同的词段

  • "$*"Anda boleh mendapatkan keseluruhan rentetan frasa tunggal seperti "p1 p2 p3 p4"

  • Selain itu, cari akaun awam Linux untuk mengetahui cara membalas "git books" di latar belakang dan dapatkan pakej hadiah kejutan .

10 Apakah perbezaan antara && dan ||?

1. Arahan ujian mempunyai dua bentuk

  • ekspresi ujian

  • [ekspresi ]

s

s
    ujian
  • pada masa ini rentetan: rentetan

  • integer: integer

  • fail: fail

3、当 expression 为真是返回 0(true) ,否则返回 非0(false)

  • command1 && command2 command2 只有在 command1 的RV为0(True)的条件下执行。

  • command1 || command2 command2只有在command1的RV为非0(False)的条件下执行。

4、先替换变量再比较

A=123[ -n "$A" ] && ([ "$A" -lt 100 ] || echo "too big")unset A
Salin selepas log masuk

11、> 与 < 差在哪?

0: Standard Input(STDIN)
1: Standard Output (STDOUT)
2: Standard Error Output(STDERR)

我们可用 < 来改变读进的数据信道(stdin),使之从指定的档案读进。

我们可用 > 来改变送出的数据信道(stdout, stderr),使之输出到指定的档案。

ls my.file no.such.file 1> file.out 2>file.err
# 2>&1 就是将stderr并进stdout做输出
ls my.file no.such.file 1> file.out 2>&1
# /dev/null 空
ls my.file no.such.file >/dev/null 2>&1

cat < file > file
# 在 IO Redirection 中,stdout 与 stderr 的管道会先准备好,才会从 stdin 读进资料。
# 也就是说,在上例中,> file 会先将 file 清空,然后才读进 < file , 
# 但这时候档案已经被清空了,因此就变成读不进任何数据了
Salin selepas log masuk

12、你要if还是case呢?

# if
echo -n "Do you want to continue?(Yes/No):"
read YN
if [ "$YN"=Y -o "$YN"=y -o "$YN"="Yes" -o "$YN"="yes" -o "$YN"="YES"];then
echo "continue"
else
exit 0
fi

# case
echo -n "Do you want to continue?(Yes/No):"
read YN
case "$YN" in
[Yy]|[Yy][Ee][Ss])
echo "continue"
;;
*)
exit 0
esac
Salin selepas log masuk

13、for what? while与until差在哪?

# for
for ((i=1;i<=10;i++))
do
echo "num is $i"
done

# while
num=1
while [ "$num" -le 10 ]; do
echo "num is $num"
num=$(($num + 1))
done

# until
num=1
until [ "$num" -gt 10 ]; do
echo "num is $num"
num=$(($nu + 1))
done
Salin selepas log masuk
  • break 是结束 loop

  • return 是结束 function

  • exit 是结束 script/shell

Atas ialah kandungan terperinci Tiga Belas Soalan Klasik Mengenai Skrip Shell. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Akan R.E.P.O. Ada Crossplay?
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk menukar fail ESD kepada format ISO Bagaimana untuk menukar fail ESD kepada format ISO Feb 19, 2024 am 08:37 AM

Fail esd ialah format mampatan yang digunakan dalam sistem pengendalian Windows, manakala fail ISO ialah fail imej cakera yang digunakan untuk mencipta salinan cakera atau pemacu optik maya. Apabila kita perlu menukar fail esd kepada fail iso, ini mungkin kerana fail ISO lebih biasa digunakan dan lebih mudah digunakan. Perkara berikut akan memperkenalkan anda kepada beberapa kaedah biasa untuk melengkapkan proses penukaran ini. Kaedah 1: Gunakan ESDDecrypter ESDDecrypter ialah program yang digunakan khas untuk menyahsulit dan menukar fail esd kepada fail iso.

Bagaimana untuk melaksanakan fail .sh dalam sistem Linux? Bagaimana untuk melaksanakan fail .sh dalam sistem Linux? Mar 14, 2024 pm 06:42 PM

Bagaimana untuk melaksanakan fail .sh dalam sistem Linux? Dalam sistem Linux, fail .sh ialah fail yang dipanggil skrip Shell, yang digunakan untuk melaksanakan satu siri arahan. Melaksanakan fail .sh ialah operasi yang sangat biasa Artikel ini akan memperkenalkan cara melaksanakan fail .sh dalam sistem Linux dan memberikan contoh kod khusus. Kaedah 1: Gunakan laluan mutlak untuk melaksanakan fail .sh Untuk melaksanakan fail .sh dalam sistem Linux, anda boleh menggunakan laluan mutlak untuk menentukan lokasi fail. Berikut ialah langkah khusus: Buka terminal

Bagaimana untuk memadamkan baris dengan cepat pada penghujung fail dalam Linux Bagaimana untuk memadamkan baris dengan cepat pada penghujung fail dalam Linux Mar 01, 2024 pm 09:36 PM

Apabila memproses fail di bawah sistem Linux, kadangkala perlu memadamkan baris pada penghujung fail. Operasi ini sangat biasa dalam aplikasi praktikal dan boleh dicapai melalui beberapa arahan mudah. Artikel ini akan memperkenalkan langkah-langkah untuk memadamkan baris dengan cepat pada penghujung fail dalam sistem Linux dan memberikan contoh kod khusus. Langkah 1: Semak baris terakhir fail Sebelum melakukan operasi pemadaman, anda perlu mengesahkan baris mana yang merupakan baris terakhir fail. Anda boleh menggunakan arahan tail untuk melihat baris terakhir fail Arahan khusus adalah seperti berikut: tail-n1filena

Rahsia sistem fail akar Linux Rahsia sistem fail akar Linux Feb 15, 2024 pm 01:42 PM

Linux ialah sistem pengendalian sumber terbuka, mudah alih dan boleh disesuaikan yang digunakan secara meluas dalam pelbagai bidang, seperti pelayan, desktop, peranti terbenam, dsb. Teras Linux ialah kernel, yang bertanggungjawab mengurus sumber perkakasan dan menyediakan perkhidmatan asas. Walau bagaimanapun, kernel bukanlah entiti bebas dan memerlukan sistem fail untuk menyimpan dan mengakses pelbagai data dan program. Sistem fail ialah kaedah mengatur dan mengurus fail Ia mentakrifkan nama fail, lokasi, atribut, kebenaran dan maklumat lain. Di Linux, terdapat pelbagai jenis sistem fail, seperti ext4, xfs, btrfs, dsb., yang masing-masing mempunyai ciri dan kelebihan tersendiri. Walau bagaimanapun, di antara semua sistem fail, terdapat sistem fail khas, yang merupakan asas dan teras sistem Linux, iaitu

Mengapa saya tidak boleh melaksanakan fail kelawar pada Windows 7? Mengapa saya tidak boleh melaksanakan fail kelawar pada Windows 7? Feb 19, 2024 pm 03:19 PM

Mengapa win7 tidak boleh menjalankan fail kelawar Baru-baru ini, ramai pengguna yang menggunakan sistem pengendalian Windows7 telah melaporkan bahawa mereka tidak boleh menjalankan fail .bat. Ini mencetuskan perbincangan dan kekeliruan yang meluas. Mengapakah sistem pengendalian yang berfungsi dengan baik tidak boleh menjalankan fail .bat yang mudah? Pertama, kita perlu memahami latar belakang fail .bat. Fail .bat, juga dikenali sebagai fail kelompok, ialah fail teks biasa yang mengandungi satu siri perintah yang boleh digunakan oleh jurubahasa arahan Windows (cmd.ex

Tutorial Skrip Windows PowerShell untuk Pemula Tutorial Skrip Windows PowerShell untuk Pemula Mar 13, 2024 pm 10:55 PM

Kami telah mereka bentuk tutorial skrip Windows PowerShell ini untuk pemula, sama ada anda peminat teknologi atau profesional yang ingin meningkatkan kemahiran skrip anda. Jika anda tidak mempunyai pengetahuan awal tentang skrip PowerShell, artikel ini akan bermula dengan asas dan disesuaikan untuk anda. Kami akan membantu anda menguasai langkah pemasangan untuk persekitaran PowerShell dan membimbing anda melalui konsep dan ciri utama skrip PowerShell. Jika anda bersedia untuk mengetahui lebih lanjut tentang skrip PowerShell, mari kita mulakan perjalanan pembelajaran yang menarik ini bersama-sama! Apakah WindowsPowerShell? PowerShell ialah sistem arahan hibrid yang dibangunkan oleh Microsoft

Bagaimana untuk mengautomasikan tugas menggunakan PowerShell Bagaimana untuk mengautomasikan tugas menggunakan PowerShell Feb 20, 2024 pm 01:51 PM

Jika anda seorang pentadbir IT atau pakar teknologi, anda mesti sedar tentang kepentingan automasi. Khusus untuk pengguna Windows, Microsoft PowerShell ialah salah satu alat automasi terbaik. Microsoft menawarkan pelbagai alat untuk keperluan automasi anda, tanpa perlu memasang aplikasi pihak ketiga. Panduan ini akan memperincikan cara memanfaatkan PowerShell untuk mengautomasikan tugas. Apakah skrip PowerShell? Jika anda mempunyai pengalaman menggunakan PowerShell, anda mungkin telah menggunakan arahan untuk mengkonfigurasi sistem pengendalian anda. Skrip ialah koleksi arahan ini dalam fail .ps1. Fail .ps1 mengandungi skrip yang dilaksanakan oleh PowerShell, seperti Get-Help asas

Bagaimana untuk membuka fail url Bagaimana untuk membuka fail url Mar 28, 2024 pm 06:27 PM

Kaedah untuk menggunakan fail URL untuk membuka sumber Internet termasuk: klik dua kali untuk membuka menggunakan pelayar web. Bukanya dengan editor teks, salin alamat pautan dan tampalkannya ke dalam bar alamat penyemak imbas. Melalui baris arahan, gunakan perintah "mula" atau "buka" untuk menentukan laluan fail URL. Buat fail skrip yang mengandungi arahan untuk membuka fail URL.

See all articles