Обычно вы запускаете sudo apt-get install ..., и sudo будет запрашивать ваш пароль при первом вызове sudo и кешировать пароль в течение 10 или 15 минут, поэтому следующие вызовы sudo не требуют пароля.
Если вы запустите apt-get install ... из корневого запроса, он никогда не будет запрашивать пароль.
Просто, чтобы помочь вам начать, сохраните это в файле и установите режим выполнения, затем запустите его в терминале. Посмотрите на вывод и сравните его со сценарием. Посмотрим, сможете ли вы понять, как это связано. Используйте ссылку, которая уже была предложена, чтобы помочь.
#!/bin/bash
if [[ $# != 1 ]]
then
echo usage $0 "<table_to_check>"
exit 1
fi
error=""
firstline=1
{
while read line # loop through the lines
do
# check syntax of "line"
if(($firstline))
then
#check first line syntax
echo information row=$line # debug
# ... your method here. Assign to error if something is wrong...
firstline=0 # ready for next line/loop which should be data
else
#check other lines
echo data row=$line # debug
# ... your method here. Assign to error if something is wrong...
fi
if [[ $error != "" ]] # assign any error in the data as a string message you can then print here and exit
then
echo $error
exit 2
fi
done
} < "$1"
exit 0 # no error
Чтобы реализовать проверки полей, возможно, взгляните на cut
, чтобы разбить строку на отдельные токены, например, в информационной строке:
number_of_rows=`echo $line | cut -d':' -f2`
и, учитывая образец, $ number_of_rows должен содержать «3»
Так что, чтобы проверить, что это правильно, вы можете использовать счетчик, который увеличивается на каждый цикл:
rowcount=$[rowcount+1]
Когда данных больше нет, $ rowcount должен равняться $ number_of_rows так:
if (( $rowcount != $number_of_rows ))
then
error="number of rows doesn't agree"
# ... etc ...
Что-то в этом роде.
Конечно, доступны другие методы
Вы должны, по крайней мере, начать с изучения основ bash. Я рекомендую прочитать http://mywiki.wooledge.org/BashGuide .
После прочтения руководства вы захотите разобрать текстовый файл построчно и / или по полю, что объясняет Bash FAQ 1 .
Вам также нужно будет выполнить некоторые манипуляции со строками. Часто задаваемые вопросы по Bash 100 должны покрыть это.
Просто, чтобы помочь вам начать, сохраните это в файле и установите режим выполнения, затем запустите его в терминале. Посмотрите на вывод и сравните его со сценарием. Посмотрим, сможете ли вы понять, как это связано. Используйте ссылку, которая уже была предложена, чтобы помочь.
#!/bin/bash
if [[ $# != 1 ]]
then
echo usage $0 "<table_to_check>"
exit 1
fi
error=""
firstline=1
{
while read line # loop through the lines
do
# check syntax of "line"
if(($firstline))
then
#check first line syntax
echo information row=$line # debug
# ... your method here. Assign to error if something is wrong...
firstline=0 # ready for next line/loop which should be data
else
#check other lines
echo data row=$line # debug
# ... your method here. Assign to error if something is wrong...
fi
if [[ $error != "" ]] # assign any error in the data as a string message you can then print here and exit
then
echo $error
exit 2
fi
done
} < "$1"
exit 0 # no error
Чтобы реализовать проверки полей, возможно, взгляните на cut
, чтобы разбить строку на отдельные токены, например, в информационной строке:
number_of_rows=`echo $line | cut -d':' -f2`
и, учитывая образец, $ number_of_rows должен содержать «3»
Так что, чтобы проверить, что это правильно, вы можете использовать счетчик, который увеличивается на каждый цикл:
rowcount=$[rowcount+1]
Когда данных больше нет, $ rowcount должен равняться $ number_of_rows так:
if (( $rowcount != $number_of_rows ))
then
error="number of rows doesn't agree"
# ... etc ...
Что-то в этом роде.
Конечно, доступны другие методы
Вы должны, по крайней мере, начать с изучения основ bash. Я рекомендую прочитать http://mywiki.wooledge.org/BashGuide .
После прочтения руководства вы захотите разобрать текстовый файл построчно и / или поле за полем, что объясняет Bash FAQ 1 .
Вам также нужно будет выполнить некоторые манипуляции со строками. Часто задаваемые вопросы по Bash 100 должны покрыть это.
Просто, чтобы помочь вам начать, сохраните это в файле и установите режим выполнения, затем запустите его в терминале. Посмотрите на вывод и сравните его со сценарием. Посмотрим, сможете ли вы понять, как это связано. Используйте ссылку, которая уже была предложена, чтобы помочь.
#!/bin/bash
if [[ $# != 1 ]]
then
echo usage $0 "<table_to_check>"
exit 1
fi
error=""
firstline=1
{
while read line # loop through the lines
do
# check syntax of "line"
if(($firstline))
then
#check first line syntax
echo information row=$line # debug
# ... your method here. Assign to error if something is wrong...
firstline=0 # ready for next line/loop which should be data
else
#check other lines
echo data row=$line # debug
# ... your method here. Assign to error if something is wrong...
fi
if [[ $error != "" ]] # assign any error in the data as a string message you can then print here and exit
then
echo $error
exit 2
fi
done
} < "$1"
exit 0 # no error
Чтобы реализовать проверки полей, возможно, взгляните на cut
, чтобы разбить строку на отдельные токены, например, в информационной строке:
number_of_rows=`echo $line | cut -d':' -f2`
и, учитывая образец, $ number_of_rows должен содержать «3»
Так что, чтобы проверить, что это правильно, вы можете использовать счетчик, который увеличивается на каждый цикл:
rowcount=$[rowcount+1]
Когда данных больше нет, $ rowcount должен равняться $ number_of_rows так:
if (( $rowcount != $number_of_rows ))
then
error="number of rows doesn't agree"
# ... etc ...
Что-то в этом роде.
Конечно, доступны другие методы
Вы должны, по крайней мере, начать с изучения основ bash. Я рекомендую прочитать http://mywiki.wooledge.org/BashGuide .
После прочтения руководства вы захотите разобрать текстовый файл построчно и / или поле за полем, что объясняет Bash FAQ 1 .
Вам также нужно будет выполнить некоторые манипуляции со строками. Часто задаваемые вопросы по Bash 100 должны покрыть это.
Просто, чтобы помочь вам начать, сохраните это в файле и установите режим выполнения, затем запустите его в терминале. Посмотрите на вывод и сравните его со сценарием. Посмотрим, сможете ли вы понять, как это связано. Используйте ссылку, которая уже была предложена, чтобы помочь.
#!/bin/bash
if [[ $# != 1 ]]
then
echo usage $0 "<table_to_check>"
exit 1
fi
error=""
firstline=1
{
while read line # loop through the lines
do
# check syntax of "line"
if(($firstline))
then
#check first line syntax
echo information row=$line # debug
# ... your method here. Assign to error if something is wrong...
firstline=0 # ready for next line/loop which should be data
else
#check other lines
echo data row=$line # debug
# ... your method here. Assign to error if something is wrong...
fi
if [[ $error != "" ]] # assign any error in the data as a string message you can then print here and exit
then
echo $error
exit 2
fi
done
} < "$1"
exit 0 # no error
Чтобы реализовать проверки полей, возможно, взгляните на cut
, чтобы разбить строку на отдельные токены, например, в информационной строке:
number_of_rows=`echo $line | cut -d':' -f2`
и, учитывая образец, $ number_of_rows должен содержать «3»
Так что, чтобы проверить, что это правильно, вы можете использовать счетчик, который увеличивается на каждый цикл:
rowcount=$[rowcount+1]
Когда данных больше нет, $ rowcount должен равняться $ number_of_rows так:
if (( $rowcount != $number_of_rows ))
then
error="number of rows doesn't agree"
# ... etc ...
Что-то в этом роде.
Конечно, доступны другие методы
Просто, чтобы помочь вам начать, сохраните это в файле и установите режим выполнения, затем запустите его в терминале. Посмотрите на вывод и сравните его со сценарием. Посмотрим, сможете ли вы понять, как это связано. Используйте ссылку, которая уже была предложена, чтобы помочь.
#!/bin/bash
if [[ $# != 1 ]]
then
echo usage $0 "<table_to_check>"
exit 1
fi
error=""
firstline=1
{
while read line # loop through the lines
do
# check syntax of "line"
if(($firstline))
then
#check first line syntax
echo information row=$line # debug
# ... your method here. Assign to error if something is wrong...
firstline=0 # ready for next line/loop which should be data
else
#check other lines
echo data row=$line # debug
# ... your method here. Assign to error if something is wrong...
fi
if [[ $error != "" ]] # assign any error in the data as a string message you can then print here and exit
then
echo $error
exit 2
fi
done
} < "$1"
exit 0 # no error
Чтобы реализовать проверки полей, возможно, взгляните на cut
, чтобы разбить строку на отдельные токены, например, в информационной строке:
number_of_rows=`echo $line | cut -d':' -f2`
и, учитывая образец, $ number_of_rows должен содержать «3»
Так что, чтобы проверить, что это правильно, вы можете использовать счетчик, который увеличивается на каждый цикл:
rowcount=$[rowcount+1]
Когда данных больше нет, $ rowcount должен равняться $ number_of_rows так:
if (( $rowcount != $number_of_rows ))
then
error="number of rows doesn't agree"
# ... etc ...
Что-то в этом роде.
Конечно, доступны другие методы
Вы должны, по крайней мере, начать с изучения основ bash. Я рекомендую прочитать http://mywiki.wooledge.org/BashGuide .
После прочтения руководства вы захотите разобрать текстовый файл построчно и / или поле за полем, что объясняет Bash FAQ 1 .
Вам также нужно будет выполнить некоторые манипуляции со строками. Часто задаваемые вопросы по Bash 100 должны покрыть это.
Просто, чтобы помочь вам начать, сохраните это в файле и установите режим выполнения, затем запустите его в терминале. Посмотрите на вывод и сравните его со сценарием. Посмотрим, сможете ли вы понять, как это связано. Используйте ссылку, которая уже была предложена, чтобы помочь.
#!/bin/bash
if [[ $# != 1 ]]
then
echo usage $0 "<table_to_check>"
exit 1
fi
error=""
firstline=1
{
while read line # loop through the lines
do
# check syntax of "line"
if(($firstline))
then
#check first line syntax
echo information row=$line # debug
# ... your method here. Assign to error if something is wrong...
firstline=0 # ready for next line/loop which should be data
else
#check other lines
echo data row=$line # debug
# ... your method here. Assign to error if something is wrong...
fi
if [[ $error != "" ]] # assign any error in the data as a string message you can then print here and exit
then
echo $error
exit 2
fi
done
} < "$1"
exit 0 # no error
Чтобы реализовать проверки полей, возможно, взгляните на cut
, чтобы разбить строку на отдельные токены, например, в информационной строке:
number_of_rows=`echo $line | cut -d':' -f2`
и, учитывая образец, $ number_of_rows должен содержать «3»
Так что, чтобы проверить, что это правильно, вы можете использовать счетчик, который увеличивается на каждый цикл:
rowcount=$[rowcount+1]
Когда данных больше нет, $ rowcount должен равняться $ number_of_rows так:
if (( $rowcount != $number_of_rows ))
then
error="number of rows doesn't agree"
# ... etc ...
Что-то в этом роде.
Конечно, доступны другие методы
Вы должны, по крайней мере, начать с изучения основ bash. Я рекомендую прочитать http://mywiki.wooledge.org/BashGuide .
После прочтения руководства вы захотите разобрать текстовый файл построчно и / или поле за полем, что объясняет Bash FAQ 1 .
Вам также нужно будет выполнить некоторые манипуляции со строками. Часто задаваемые вопросы по Bash 100 должны покрыть это.
Просто, чтобы помочь вам начать, сохраните это в файле и установите режим выполнения, затем запустите его в терминале. Посмотрите на вывод и сравните его со сценарием. Посмотрим, сможете ли вы понять, как это связано. Используйте ссылку, которая уже была предложена, чтобы помочь.
#!/bin/bash
if [[ $# != 1 ]]
then
echo usage $0 "<table_to_check>"
exit 1
fi
error=""
firstline=1
{
while read line # loop through the lines
do
# check syntax of "line"
if(($firstline))
then
#check first line syntax
echo information row=$line # debug
# ... your method here. Assign to error if something is wrong...
firstline=0 # ready for next line/loop which should be data
else
#check other lines
echo data row=$line # debug
# ... your method here. Assign to error if something is wrong...
fi
if [[ $error != "" ]] # assign any error in the data as a string message you can then print here and exit
then
echo $error
exit 2
fi
done
} < "$1"
exit 0 # no error
Чтобы реализовать проверки полей, возможно, взгляните на cut
, чтобы разбить строку на отдельные токены, например, в информационной строке:
number_of_rows=`echo $line | cut -d':' -f2`
и, учитывая образец, $ number_of_rows должен содержать «3»
Так что, чтобы проверить, что это правильно, вы можете использовать счетчик, который увеличивается на каждый цикл:
rowcount=$[rowcount+1]
Когда данных больше нет, $ rowcount должен равняться $ number_of_rows так:
if (( $rowcount != $number_of_rows ))
then
error="number of rows doesn't agree"
# ... etc ...
Что-то в этом роде.
Конечно, доступны другие методы
< <(cat $1)
лучше написано < "$1"
; нет смысла сначала, чтобы cat прочитал файл, а затем оболочку. Также цитаты.
– geirha
28 June 2012 в 21:29
IFS=: read -ra fields <<< "$line"; echo "First field is ${fields[0]}, second is ${fields[1]}, ..."
(см. mywiki.wooledge.org/BashFAQ/001 ). Синтаксис $[ ... ]
для выполнения математики давно устарел. Это даже не зарегистрировано больше. Используйте rowcount=$(( rowcount + 1 ))
или ((rowcount++))
.
– geirha
29 June 2012 в 03:18
Вы должны, по крайней мере, начать с изучения основ bash. Я рекомендую прочитать http://mywiki.wooledge.org/BashGuide .
После прочтения руководства вы захотите разобрать текстовый файл построчно и / или по полю, что объясняет Bash FAQ 1 .
Вам также нужно будет выполнить некоторые манипуляции со строками. Часто задаваемые вопросы по Bash 100 должны покрыть это.