Một tùy chọn khác cho tập lệnh của Arcege sẽ là hàm Bash:
sshbatch() {
  # Expect at least 2 parameters, if less are provided print help
  if [[ ${#@} -lt 2 ]]; then
    printf 'Usage: sshbatch [user@]host... input_file\n'
  else
    while read -r -u "$fd" host; do
      # Check if the last parameter is a readable file, else print error and exit
      [[ -r ${@:(-1)} ]] || { printf "The file ${@:(-1)} is not readable!\n"; break; }
      # Run remote bash from the file given in the last parameter
      ssh -o BatchMode=yes "$host" bash -s < "${@:(-1)}"
      # Read host list from 1st to next to last parameters
    done {fd}< <(printf '%s\n' "${@:1:${#@}-1}")
  fi
}
Tôi không sử dụng -Ttùy chọn của ssh , vì nó không hoạt động với nó trong mọi trường hợp.
Kịch bản lệnh này sử dụng mở rộng tham số trên mảng tham số vị trí $@:
- "${@:(-1)}"mở rộng đến tham số cuối cùng (theo nghĩa đen là từ đầu đến cuối)
- "${#@}"mở rộng đến số lượng tham số vị trí
- "${@:1:${#@}-1}"mở rộng thành một danh sách tất cả các tham số từ đầu đến cuối đến cuối (nghĩa đen là số tham số ít hơn một).