Как создать пустой список строк и добавить его с помощью сценария оболочки?

What I want is a normal way to quit, like q in top.

Это КонтрольС:)

I am just curious about the question, because I feel that killing the process is not a good way to quit something.

^C(ControlC)отправляет SIGINT процессу, который определен как:

The SIGINT signal is sent to a process by its controlling terminal when a user wishes to interrupt the process

Это именно то, что вы хотите здесь сделать, это прерывание tail. Нет другого способа выполнить то, что вы пытаетесь сделать ("хорошо" бросить хвост ), и хотя другие ответы позволяют остановить tailдругими способами, они ничем не лучше.

Нажатие ^Cпопытается прервать задачу в Linux --это совершенно нормально, и это только «нехорошо», если этот процесс находится в середине чего-то, и вы не даете ему завершиться, а затем единственный «нехороший» побочный эффект — это остатки этого процесса. Например, ^Cв середине команды makeоставляет частично -скомпилированное программное обеспечение, но это нормально :дальнейший запуск makeочистит/возобновит это с того места, где оно было остановлено.

0
13.09.2019, 09:32
2 ответа

Попробуйте это,

#complete_robotpath=() ### not used in script... so commented
IFS=','
A=Basic-Call,Call-Hold  ## In shell, we dont prefix with $ while declaring variable and should not have space in value.
B=VoLTE-VoLTE,VoLTE-3G
read -ra ADDR1 <<< "$A" ## In shell, we should pass value of a variable by prefixing with $
read -ra ADDR2 <<< "$B" IFS=',' ## In shell, we should pass value of a variable by prefixing with $
for i in "${ADDR1[@]}";
do
  for j in "${ADDR2[@]}";
  do
  robot_path+=`echo $i/$j/` ## "+=" to concatinate string and sufix by / as expected result
  done
done

pybot_exec_cmd=`echo $robot_path`
echo $pybot_exec_cmd

Выход:

Basic-Call/VoLTE-VoLTE/Basic-Call/VoLTE-3G/Call-Hold/VoLTE-VoLTE/Call-Hold/VoLTE-3G/
0
28.01.2020, 02:39

После того, как вы изменили требования вашего вопроса еще раз ...

В bashвы могли бы использовать раскрытие фигурной скобки:

$ printf '%s' {Book/,Pen/,Pencil/,n/}{Cat/,Rat/,Bat/,m/}
Book/Cat/Book/Rat/Book/Bat/Book/m/Pen/Cat/Pen/Rat/Pen/Bat/Pen/m/Pencil/Cat/Pencil/Rat/Pencil/Bat/Pencil/m/n/Cat/n/Rat/n/Bat/n/m/

Обратите внимание, что вывод не заканчивается новой строкой.

Чтобы создать pathиз двух разделенных запятыми строк в $Aи$B:

#!/bin/bash

A="Book,Pen,Pencil,n"
B="Cat,Rat,Bat,m"

oldIFS=$IFS
IFS=,
for i in $A; do
    for j in $B; do
        path+="$i/$j/"
    done
done
IFS=$oldIFS

printf '%s\n' "$path"

Выход:

$./script.sh
Book/Cat/Book/Rat/Book/Bat/Book/m/Pen/Cat/Pen/Rat/Pen/Bat/Pen/m/Pencil/Cat/Pencil/Rat/Pencil/Bat/Pencil/m/n/Cat/n/Rat/n/Bat/n/m/
1
28.01.2020, 02:39

Теги

Похожие вопросы