Bash Komut Dosyasında Komut Satırı Argümanları Nasıl Kullanılır

How Handle Command Line Arguments Bash Script



Çoğu durumda, bash komut dosyaları, komut dosyasına giriş seçenekleri sağlamak için bağımsız değişken değerleri gerektirir. Bir bash betiğinde komut satırı argümanlarını iki yolla işleyebilirsiniz. Biri kullanarak argüman değişkenleri ve diğeri kullanmaktır getopts işlev. Bu öğreticide komut satırı bağımsız değişkenlerini nasıl işleyebileceğiniz gösterilmektedir.

Argüman değişkenlerini kullanma:

Argüman değişkeni 0 $'dan başlar. Ana komut dosyası adı, komut satırı bağımsız değişkenlerinden bağımsız değişken değerleri alan $0 içinde saklanır. Komut satırında iki argüman iletilirse, argüman değerleri sırayla $1 ve $2 değişkenlerinde alınır.







Örnek -1: Üç sayısal değeri bağımsız değişken olarak gönderme

Bir bash dosyası oluşturun ve aşağıdaki kodu ekleyin. Komut dosyası üç bağımsız değişken değeri alacak ve $1, $2 ve $3 olarak saklanacaktır. Toplam argüman sayısını sayar, argüman değerlerini döngülü ve döngüsüz olarak yazdırır. Son olarak, tüm argüman değerlerinin toplamını yazdırın.



#!/bin/bash

# Toplam argüman sayısını sayma
dışarı attı 'Toplam bağımsız değişken sayısı: $#'

# Argüman değerlerini ayrı ayrı okuma
dışarı attı 'İlk bağımsız değişken değeri: $1'
dışarı attı 'İkinci bağımsız değişken değeri: $2'
dışarı attı 'Üçüncü bağımsız değişken değeri: $3'

# Döngü kullanarak argüman değerlerini okuma
içinargvaliçinde ' [e-posta korumalı]'
yapmak
dışarı attı -n '$argval'
tamamlamak

# Argüman değerleri ekleme
toplam= $((1 dolar+2 dolar+3 dolar))

# sonucu yazdır
dışarı attı -Ve ' Toplamın sonucu =$toplam'

Bash dosyasını üç sayısal bağımsız değişken değeriyle çalıştırın.



$bashcmdline1.shelli 35 on beş





Örnek -2: Dosya adını argüman olarak almak

Bir bash dosyası oluşturun ve herhangi bir dosyanın toplam karakter sayısını saymak için aşağıdaki kodu ekleyin. Burada dosya adı komut satırı argümanı olarak iletilecektir.

#!/bin/bash
dosya adı=1 dolar
toplam karakter=``tuvalet -C $dosya adı``
dışarı attı 'Toplam karakter sayısı$ toplam karakter'

Bash betiğini dosya adıyla tek argüman değeri olarak çalıştırın ve o dosyanın toplam karakter sayısını kontrol etmek için başka bir komut çalıştırın. Burada parametre değeri olarak çalışan.txt dosyası kullanılır. Çalışan.txt dosyasının toplam karakter sayısı 204'tür.



$bashcmdline2.sh çalışan.txt
$tuvalet -Cçalışan.txt

getopts işlevini kullanma:

Verileri veritabanında veya herhangi bir dosyada depolamak veya komut satırı argümanları değerlerine dayalı olarak belirli bir formatta bir rapor oluşturmak istiyorsanız, o zaman getopts işlevi, görevi yapmak için en iyi seçenektir. Yerleşik bir linux işlevidir. Böylece, komut satırından biçimlendirilmiş verileri okumak için komut dosyanızda bu işlevi kolayca kullanabilirsiniz.

Örnek -1: argümanları getopts işleviyle okuma

Bir bash dosyası oluşturun ve kullanımını anlamak için aşağıdaki betiği ekleyin. getopts işlev. 'getopts' işlevi, komut satırı argüman seçeneklerini ve argüman değerlerini okumak için while döngüsü ile birlikte kullanılır. Burada 4 seçenek kullanılmıştır. 'ben', 'n', 'm' ve 'Ve' . case ifadesi, belirli seçeneği eşleştirmek ve argüman değerini bir değişkende saklamak için kullanılır. Son olarak, değişkenin değerlerini yazdırın.

#!/bin/bash
süre getopts ':i:n:m:e:'sinirli;yapmak
durum $ argüman içinde
ben) İD=$OPTARG;;
n) İsim=$OPTARG;;
m) Üretim tarihi=$OPTARG;;
Ve) Son kullanma tarihi=$OPTARG;;
esac
tamamlamak
dışarı attı -Ve ' $ kimlik $Ad $Üretim_tarihi $Expire_date '

Dosyayı aşağıdaki seçenekler ve argüman değerleriyle çalıştırın. Burada p100 -i seçeneğinin değeri, 'Hot Cake' -n seçeneğinin değeri, '01-01-2018' -m seçeneğinin değeri ve '06-01-2018' -'nin değeridir. e seçeneği.

$bashcmdline3.sh-benp001-n 'Sıcak kek' -m '01 -01-2018' -Ve '06 -01-2018'

Bir komut dosyasında basit değerler göndermeniz gerektiğinde, argüman değişkenlerini kullanmak daha iyidir. Ancak verileri biçimlendirilmiş bir şekilde göndermek istiyorsanız, argüman değerlerini almak için getopts işlevini kullanmak daha iyidir. Daha fazla bilgi için izle video !