Bash
bash 上每個使用者目錄的文件可用性
我有一個想法,如何檢查主目錄中每個使用者的“id_rsa.pub”的可用性。但是有些東西不起作用。我的腳本:
#!/bin/bash users=`ls /home/` for i in "$users"; do if [[ -f "/home/$i/.ssh/id_rsa.pub" ]]; then echo "All users have this key" else echo "Users $i don't have this key, We need build key for this users" fi done
在調試中:
+ [[ -f /home/donovan valeri john roman colbi testuser/.ssh/id_rsa.pub ]]
我怎麼看,它需要一個完整的路徑,但不是每個使用者的完整路徑。請幫忙,我做錯了什麼?感謝您的關注。當然,我有一個結果:
Users donovan valeri john roman colbi testuser don't have this key, We need build key for this users
引號導致所有使用者名被視為單個字元串:
for i in "$users"; do
刪除引號,它的工作原理:
for i in $users; do
使用者名不包含空格,因此您在這裡應該是安全的。
在腳本中使用這
ls /home
不是一個好主意。ls
是一個人類可讀的列表命令,不打算在腳本中使用。您可以簡單地創建一個數組並遍歷索引,例如
#!/usr/bin/env bash users=(/home/*) for i in "${users[@]}"; do if [[ -f "$i/.ssh/id_rsa.pub" ]]; then echo "All users have this key" else echo "Users $i don't have this key, We need build key for this users" fi done