到目前为止,我将 PC 连接到 NAS 的尝试只取得了部分成功。首先,要在“yad”下搜索目录。如果它包含文件(真),则达到“已激活”状态并在列中可见。否则应显示“已停用(假)”状态。我已经在网上找到了脚本的一部分。以下代码已经向我显示了选择文件夹后的结果 /home/$USER/xyz,其中“xyz”对应于我的 NAS 上的文件夹。到目前为止,以下代码运行良好。
#!/bin/bash
test -e /tmp/yadpipe03 && rm -f /tmp/yadpipe03
# Named pipe initialization
export PIPE_03=/tmp/yadpipe03
mkfifo $PIPE_03
exec 3<> $PIPE_03
function load_data
{
DIRS="$(yad --file --multiple --width=800 --height=600 \
--directory --title="Select folder")"
OIFS=$IFS
IFS="|"
[[ ! -z "$DIRS" ]] && YAD_DATA=($(for DIR in "$DIRS";do echo "$DIR";done ))
IFS=$OIFS
for DATA in "${YAD_DATA[@]}";do
echo True # Adds "True" for the checklist column
echo "${DATA}"
done
}
export -f load_data
function clear_all
{
echo -e '\f'
}
export -f clear_all
# Main Dialog
Record=($(yad --list --checklist --separator="|" --grid-lines=hor \
--width=1200 --height=800 --center \
--title="Set up connections to the NAS" \
--text="Example" \
--column "Select" --column "Folder" --column "Status" \
--button="Add folder!gtk-add":'bash -c "load_data > $PIPE_03"' \
--button="Activate!gtk-connect":'bash -c "load_data > $PIPE_03"' \
--button="Deactivate!gtk-disconnect":'bash -c "load_data > $PIPE_03"' \
--button="Clear!gtk-clear":'bash -c "clear_all > $PIPE_03"' \
--button="OK!gtk-ok":0 \
--listen --print-all < $PIPE_03))
Action=$?
echo ${Record[@]}
从结果中 - echo ${Record[@]}
- 现在应该过滤文件夹的名称。然后,通过按下“激活”或“停用”按钮,相应的命令(我知道)和状态将使用 case 命令写入文件。如果现在可能,应该在 Yad 窗口中更新状态。最迟下次选择文件夹时,应该提供当前视图。
由于我不是公认的专家,因此我在此寻求帮助。
非常感谢